diff --git a/ConfigFile.rb b/ConfigFile.rb index 9e1692e..5c61011 100644 --- a/ConfigFile.rb +++ b/ConfigFile.rb @@ -4,29 +4,32 @@ def initialize(file_string) @lines = file_string end - def load - process_lines(lines) - end + # maybe it's better to define "load" in subclasses so we can populate the subclass-specific member + # def load + # process_lines() + # end def process_lines - #file_string is a string array, + #file_string is a string array, #extendable_hash is a hash that is created through this method - @needed_lines = [] - lines.each do |line| - unless line.length == 0 || line[0] == '#' #filters empty lines and comments + needed_lines = [] + @lines.each do |line| + unless line.strip.length == 0 || line[0] == '#' #filters empty lines and comments needed_lines << line end end + @hash = {} needed_lines.map do |line| #splits every line at empty spaces - line.split + line = line.split(" ") + @hash[line[0]] = line.drop(1) #line.drop(1) returns line without the first (0th) entry end - @hash = {} - needed_lines.map do |line| - hash[line[0]] => line.drop(1) #line.drop(1) returns line without the first (0th) entry - end - return hash + # needed_lines.map do |line| + # hash[line[0]] = line.drop(1) #line.drop(1) returns line without the first (0th) entry + # end + + return @hash end -end \ No newline at end of file +end diff --git a/ConfigFileDriver.rb b/ConfigFileDriver.rb new file mode 100644 index 0000000..15a6a83 --- /dev/null +++ b/ConfigFileDriver.rb @@ -0,0 +1,21 @@ +# we can use this to test HttpdConfig.rb and MimeTypes.rb +#require_relative 'HttpdConfig' +require_relative 'MimeTypes' +class ConfigFileDriver + + def start + lines_from_mime_types = IO.readlines "config/mime.types" + lines_from_httpd_config = IO.readlines "config/httpd.config" + + #lines_from_httpd_config.each { |line| puts line } + + # httpd_config = HttpdConfig.new( lines_from_mime_types ) + # httpd_config.load + + mime_types = MimeTypes.new( lines_from_mime_types ) + mime_types.load + puts mime_types.for("html") + end + + ConfigFileDriver.new().start +end diff --git a/Headers_Collection.rb b/Headers_Collection.rb index 93d08b4..a837f91 100644 --- a/Headers_Collection.rb +++ b/Headers_Collection.rb @@ -10,5 +10,6 @@ def add(key, value) def to_s @headers.map do |key, value| "#{key}: #{value}" + end end end \ No newline at end of file diff --git a/MimeTypes.rb b/MimeTypes.rb new file mode 100644 index 0000000..0eb7b8f --- /dev/null +++ b/MimeTypes.rb @@ -0,0 +1,12 @@ +require_relative 'ConfigFile' +class MimeTypes < ConfigFile + + + def load + @mime_types = process_lines() + end + + def for(extension) + @mime_types[extension] + end +end diff --git a/config/httpd.config b/config/httpd.config new file mode 100644 index 0000000..50a3876 --- /dev/null +++ b/config/httpd.config @@ -0,0 +1,2 @@ +DocumentRoot /home/somewhere +ServerRoot /home/server diff --git a/config/mime.types b/config/mime.types new file mode 100644 index 0000000..6cbbb2a --- /dev/null +++ b/config/mime.types @@ -0,0 +1,644 @@ +3dm x-world/x-3dmf + +3dmf x-world/x-3dmf +# comment +a application/octet-stream +aab application/x-authorware-bin +aam application/x-authorware-map +aas application/x-authorware-seg +abc text/vnd.abc +acgi text/html +afl video/animaflex +ai application/postscript +aif audio/aiff +aif audio/x-aiff +aifc audio/aiff +aifc audio/x-aiff +aiff audio/aiff +aiff audio/x-aiff +aim application/x-aim +aip text/x-audiosoft-intra +ani application/x-navi-animation +aos application/x-nokia-9000-communicator-add-on-software +aps application/mime +arc application/octet-stream +arj application/arj +arj application/octet-stream +art image/x-jg +asf video/x-ms-asf +asm text/x-asm +asp text/asp +asx application/x-mplayer2 +asx video/x-ms-asf +asx video/x-ms-asf-plugin +au audio/basic +au audio/x-au +avi application/x-troff-msvideo +avi video/avi +avi video/msvideo +avi video/x-msvideo +avs video/avs-video +bcpio application/x-bcpio +bin application/mac-binary +bin application/macbinary +bin application/octet-stream +bin application/x-binary +bin application/x-macbinary +bm image/bmp +bmp image/bmp +bmp image/x-windows-bmp +boo application/book +book application/book +boz application/x-bzip2 +bsh application/x-bsh +bz application/x-bzip +bz2 application/x-bzip2 +c text/plain +c text/x-c +c++ text/plain +cat application/vnd.ms-pki.seccat +cc text/plain +cc text/x-c +ccad application/clariscad +cco application/x-cocoa +cdf application/cdf +cdf application/x-cdf +cdf application/x-netcdf +cer application/pkix-cert +cer application/x-x509-ca-cert +cha application/x-chat +chat application/x-chat +class application/java +class application/java-byte-code +class application/x-java-class +com application/octet-stream +com text/plain +conf text/plain +cpio application/x-cpio +cpp text/x-c +cpt application/mac-compactpro +cpt application/x-compactpro +cpt application/x-cpt +crl application/pkcs-crl +crl application/pkix-crl +crt application/pkix-cert +crt application/x-x509-ca-cert +crt application/x-x509-user-cert +csh application/x-csh +csh text/x-script.csh +css application/x-pointplus +css text/css +cxx text/plain +dcr application/x-director +deepv application/x-deepv +def text/plain +der application/x-x509-ca-cert +dif video/x-dv +dir application/x-director +dl video/dl +dl video/x-dl +doc application/msword +dot application/msword +dp application/commonground +drw application/drafting +dump application/octet-stream +dv video/x-dv +dvi application/x-dvi +dwf drawing/x-dwf (old) +dwf model/vnd.dwf +dwg application/acad +dwg image/vnd.dwg +dwg image/x-dwg +dxf application/dxf +dxf image/vnd.dwg +dxf image/x-dwg +dxr application/x-director +el text/x-script.elisp +elc application/x-bytecode.elisp (compiled elisp) +elc application/x-elc +env application/x-envoy +eps application/postscript +es application/x-esrehber +etx text/x-setext +evy application/envoy +evy application/x-envoy +exe application/octet-stream +f text/plain +f text/x-fortran +f77 text/x-fortran +f90 text/plain +f90 text/x-fortran +fdf application/vnd.fdf +fif application/fractals +fif image/fif +fli video/fli +fli video/x-fli +flo image/florian +flx text/vnd.fmi.flexstor +fmf video/x-atomic3d-feature +for text/plain +for text/x-fortran +fpx image/vnd.fpx +fpx image/vnd.net-fpx +frl application/freeloader +funk audio/make +g text/plain +g3 image/g3fax +gif image/gif +gl video/gl +gl video/x-gl +gsd audio/x-gsm +gsm audio/x-gsm +gsp application/x-gsp +gss application/x-gss +gtar application/x-gtar +gz application/x-compressed +gz application/x-gzip +gzip application/x-gzip +gzip multipart/x-gzip +h text/plain +h text/x-h +hdf application/x-hdf +help application/x-helpfile +hgl application/vnd.hp-hpgl +hh text/plain +hh text/x-h +hlb text/x-script +hlp application/hlp +hlp application/x-helpfile +hlp application/x-winhelp +hpg application/vnd.hp-hpgl +hpgl application/vnd.hp-hpgl +hqx application/binhex +hqx application/binhex4 +hqx application/mac-binhex +hqx application/mac-binhex40 +hqx application/x-binhex40 +hqx application/x-mac-binhex40 +hta application/hta +htc text/x-component +htm text/html +html text/html +htmls text/html +htt text/webviewhtml +htx text/html +ice x-conference/x-cooltalk +ico image/x-icon +idc text/plain +ief image/ief +iefs image/ief +iges application/iges +iges model/iges +igs application/iges +igs model/iges +ima application/x-ima +imap application/x-httpd-imap +inf application/inf +ins application/x-internett-signup +ip application/x-ip2 +isu video/x-isvideo +it audio/it +iv application/x-inventor +ivr i-world/i-vrml +ivy application/x-livescreen +jam audio/x-jam +jav text/plain +jav text/x-java-source +java text/plain +java text/x-java-source +jcm application/x-java-commerce +jfif image/jpeg +jfif image/pjpeg +jfif-tbnl image/jpeg +jpe image/jpeg +jpe image/pjpeg +jpeg image/jpeg +jpeg image/pjpeg +jpg image/jpeg +jpg image/pjpeg +jps image/x-jps +js application/x-javascript +jut image/jutvision +kar audio/midi +kar music/x-karaoke +ksh application/x-ksh +ksh text/x-script.ksh +la audio/nspaudio +la audio/x-nspaudio +lam audio/x-liveaudio +latex application/x-latex +lha application/lha +lha application/octet-stream +lha application/x-lha +lhx application/octet-stream +list text/plain +lma audio/nspaudio +lma audio/x-nspaudio +log text/plain +lsp application/x-lisp +lsp text/x-script.lisp +lst text/plain +lsx text/x-la-asf +ltx application/x-latex +lzh application/octet-stream +lzh application/x-lzh +lzx application/lzx +lzx application/octet-stream +lzx application/x-lzx +m text/plain +m text/x-m +m1v video/mpeg +m2a audio/mpeg +m2v video/mpeg +m3u audio/x-mpequrl +man application/x-troff-man +map application/x-navimap +mar text/plain +mbd application/mbedlet +mc$ application/x-magic-cap-package-1.0 +mcd application/mcad +mcd application/x-mathcad +mcf image/vasa +mcf text/mcf +mcp application/netmc +me application/x-troff-me +mht message/rfc822 +mhtml message/rfc822 +mid application/x-midi +mid audio/midi +mid audio/x-mid +mid audio/x-midi +mid music/crescendo +mid x-music/x-midi +midi application/x-midi +midi audio/midi +midi audio/x-mid +midi audio/x-midi +midi music/crescendo +midi x-music/x-midi +mif application/x-frame +mif application/x-mif +mime message/rfc822 +mime www/mime +mjf audio/x-vnd.audioexplosion.mjuicemediafile +mjpg video/x-motion-jpeg +mm application/base64 +mm application/x-meme +mme application/base64 +mod audio/mod +mod audio/x-mod +moov video/quicktime +mov video/quicktime +movie video/x-sgi-movie +mp2 audio/mpeg +mp2 audio/x-mpeg +mp2 video/mpeg +mp2 video/x-mpeg +mp2 video/x-mpeq2a +mp3 audio/mpeg3 +mp3 audio/x-mpeg-3 +mp3 video/mpeg +mp3 video/x-mpeg +mpa audio/mpeg +mpa video/mpeg +mpc application/x-project +mpe video/mpeg +mpeg video/mpeg +mpg audio/mpeg +mpg video/mpeg +mpga audio/mpeg +mpp application/vnd.ms-project +mpt application/x-project +mpv application/x-project +mpx application/x-project +mrc application/marc +ms application/x-troff-ms +mv video/x-sgi-movie +my audio/make +mzz application/x-vnd.audioexplosion.mzz +nap image/naplps +naplps image/naplps +nc application/x-netcdf +ncm application/vnd.nokia.configuration-message +nif image/x-niff +niff image/x-niff +nix application/x-mix-transfer +nsc application/x-conference +nvd application/x-navidoc +o application/octet-stream +oda application/oda +omc application/x-omc +omcd application/x-omcdatamaker +omcr application/x-omcregerator +p text/x-pascal +p10 application/pkcs10 +p10 application/x-pkcs10 +p12 application/pkcs-12 +p12 application/x-pkcs12 +p7a application/x-pkcs7-signature +p7c application/pkcs7-mime +p7c application/x-pkcs7-mime +p7m application/pkcs7-mime +p7m application/x-pkcs7-mime +p7r application/x-pkcs7-certreqresp +p7s application/pkcs7-signature +part application/pro_eng +pas text/pascal +pbm image/x-portable-bitmap +pcl application/vnd.hp-pcl +pcl application/x-pcl +pct image/x-pict +pcx image/x-pcx +pdb chemical/x-pdb +pdf application/pdf +pfunk audio/make +pfunk audio/make.my.funk +pgm image/x-portable-graymap +pgm image/x-portable-greymap +pic image/pict +pict image/pict +pkg application/x-newton-compatible-pkg +pko application/vnd.ms-pki.pko +pl text/plain +pl text/x-script.perl +plx application/x-pixclscript +pm image/x-xpixmap +pm text/x-script.perl-module +pm4 application/x-pagemaker +pm5 application/x-pagemaker +png image/png +pnm application/x-portable-anymap +pnm image/x-portable-anymap +pot application/mspowerpoint +pot application/vnd.ms-powerpoint +pov model/x-pov +ppa application/vnd.ms-powerpoint +ppm image/x-portable-pixmap +pps application/mspowerpoint +pps application/vnd.ms-powerpoint +ppt application/mspowerpoint +ppt application/powerpoint +ppt application/vnd.ms-powerpoint +ppt application/x-mspowerpoint +ppz application/mspowerpoint +pre application/x-freelance +prt application/pro_eng +ps application/postscript +psd application/octet-stream +pvu paleovu/x-pv +pwz application/vnd.ms-powerpoint +py text/x-script.phyton +pyc applicaiton/x-bytecode.python +qcp audio/vnd.qcelp +qd3 x-world/x-3dmf +qd3d x-world/x-3dmf +qif image/x-quicktime +qt video/quicktime +qtc video/x-qtc +qti image/x-quicktime +qtif image/x-quicktime +ra audio/x-pn-realaudio +ra audio/x-pn-realaudio-plugin +ra audio/x-realaudio +ram audio/x-pn-realaudio +ras application/x-cmu-raster +ras image/cmu-raster +ras image/x-cmu-raster +rast image/cmu-raster +rexx text/x-script.rexx +rf image/vnd.rn-realflash +rgb image/x-rgb +rm application/vnd.rn-realmedia +rm audio/x-pn-realaudio +rmi audio/mid +rmm audio/x-pn-realaudio +rmp audio/x-pn-realaudio +rmp audio/x-pn-realaudio-plugin +rng application/ringing-tones +rng application/vnd.nokia.ringing-tone +rnx application/vnd.rn-realplayer +roff application/x-troff +rp image/vnd.rn-realpix +rpm audio/x-pn-realaudio-plugin +rt text/richtext +rt text/vnd.rn-realtext +rtf application/rtf +rtf application/x-rtf +rtf text/richtext +rtx application/rtf +rtx text/richtext +rv video/vnd.rn-realvideo +s text/x-asm +s3m audio/s3m +saveme application/octet-stream +sbk application/x-tbook +scm application/x-lotusscreencam +scm text/x-script.guile +scm text/x-script.scheme +scm video/x-scm +sdml text/plain +sdp application/sdp +sdp application/x-sdp +sdr application/sounder +sea application/sea +sea application/x-sea +set application/set +sgm text/sgml +sgm text/x-sgml +sgml text/sgml +sgml text/x-sgml +sh application/x-bsh +sh application/x-sh +sh application/x-shar +sh text/x-script.sh +shar application/x-bsh +shar application/x-shar +shtml text/html +shtml text/x-server-parsed-html +sid audio/x-psid +sit application/x-sit +sit application/x-stuffit +skd application/x-koan +skm application/x-koan +skp application/x-koan +skt application/x-koan +sl application/x-seelogo +smi application/smil +smil application/smil +snd audio/basic +snd audio/x-adpcm +sol application/solids +spc application/x-pkcs7-certificates +spc text/x-speech +spl application/futuresplash +spr application/x-sprite +sprite application/x-sprite +src application/x-wais-source +ssi text/x-server-parsed-html +ssm application/streamingmedia +sst application/vnd.ms-pki.certstore +step application/step +stl application/sla +stl application/vnd.ms-pki.stl +stl application/x-navistyle +stp application/step +sv4cpio application/x-sv4cpio +sv4crc application/x-sv4crc +svf image/vnd.dwg +svf image/x-dwg +svr application/x-world +svr x-world/x-svr +swf application/x-shockwave-flash +t application/x-troff +talk text/x-speech +tar application/x-tar +tbk application/toolbook +tbk application/x-tbook +tcl application/x-tcl +tcl text/x-script.tcl +tcsh text/x-script.tcsh +tex application/x-tex +texi application/x-texinfo +texinfo application/x-texinfo +text application/plain +text text/plain +tgz application/gnutar +tgz application/x-compressed +tif image/tiff +tif image/x-tiff +tiff image/tiff +tiff image/x-tiff +tr application/x-troff +tsi audio/tsp-audio +tsp application/dsptype +tsp audio/tsplayer +tsv text/tab-separated-values +turbot image/florian +txt text/plain +uil text/x-uil +uni text/uri-list +unis text/uri-list +unv application/i-deas +uri text/uri-list +uris text/uri-list +ustar application/x-ustar +ustar multipart/x-ustar +uu application/octet-stream +uu text/x-uuencode +uue text/x-uuencode +vcd application/x-cdlink +vcs text/x-vcalendar +vda application/vda +vdo video/vdo +vew application/groupwise +viv video/vivo +viv video/vnd.vivo +vivo video/vivo +vivo video/vnd.vivo +vmd application/vocaltec-media-desc +vmf application/vocaltec-media-file +voc audio/voc +voc audio/x-voc +vos video/vosaic +vox audio/voxware +vqe audio/x-twinvq-plugin +vqf audio/x-twinvq +vql audio/x-twinvq-plugin +vrml application/x-vrml +vrml model/vrml +vrml x-world/x-vrml +vrt x-world/x-vrt +vsd application/x-visio +vst application/x-visio +vsw application/x-visio +w60 application/wordperfect6.0 +w61 application/wordperfect6.1 +w6w application/msword +wav audio/wav +wav audio/x-wav +wb1 application/x-qpro +wbmp image/vnd.wap.wbmp +web application/vnd.xara +wiz application/msword +wk1 application/x-123 +wmf windows/metafile +wml text/vnd.wap.wml +wmlc application/vnd.wap.wmlc +wmls text/vnd.wap.wmlscript +wmlsc application/vnd.wap.wmlscriptc +word application/msword +wp application/wordperfect +wp5 application/wordperfect +wp5 application/wordperfect6.0 +wp6 application/wordperfect +wpd application/wordperfect +wpd application/x-wpwin +wq1 application/x-lotus +wri application/mswrite +wri application/x-wri +wrl application/x-world +wrl model/vrml +wrl x-world/x-vrml +wrz model/vrml +wrz x-world/x-vrml +wsc text/scriplet +wsrc application/x-wais-source +wtk application/x-wintalk +xbm image/x-xbitmap +xbm image/x-xbm +xbm image/xbm +xdr video/x-amt-demorun +xgz xgl/drawing +xif image/vnd.xiff +xl application/excel +xla application/excel +xla application/x-excel +xla application/x-msexcel +xlb application/excel +xlb application/vnd.ms-excel +xlb application/x-excel +xlc application/excel +xlc application/vnd.ms-excel +xlc application/x-excel +xld application/excel +xld application/x-excel +xlk application/excel +xlk application/x-excel +xll application/excel +xll application/vnd.ms-excel +xll application/x-excel +xlm application/excel +xlm application/vnd.ms-excel +xlm application/x-excel +xls application/excel +xls application/vnd.ms-excel +xls application/x-excel +xls application/x-msexcel +xlt application/excel +xlt application/x-excel +xlv application/excel +xlv application/x-excel +xlw application/excel +xlw application/vnd.ms-excel +xlw application/x-excel +xlw application/x-msexcel +xm audio/xm +xml application/xml +xml text/xml +xmz xgl/movie +xpix application/x-vnd.ls-xpix +xpm image/x-xpixmap +xpm image/xpm +x-png image/png +xsr video/x-amt-showrun +xwd image/x-xwd +xwd image/x-xwindowdump +xyz chemical/x-pdb +z application/x-compress +z application/x-compressed +zip application/x-compressed +zip application/x-zip-compressed +zip application/zip +zip multipart/x-zip +zoo application/octet-stream +zsh text/x-script.zsh