mimetype-fu 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/MIT-LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2007 [name of plugin creator]
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README ADDED
@@ -0,0 +1,20 @@
1
+ MimetypeFu
2
+ ==========
3
+
4
+ #
5
+ # NOTICE: I am So Awesome Man! I'm just forking this to put on gemcutter... the designated maintainer can have the namespace overthere whenever (I want to make a few changes for my convenience too)
6
+ #
7
+
8
+ Some great Rails plugins like attachment_fu use the content type/mime type of a file to validate the instance of an object.
9
+ The plugin usually gets the mime type using the CGI request, however, if the file is already in the system, this approach won't work.
10
+ Adobe Flash is also known not to send the proper mime type.
11
+ As an alternative, I wrote mimetype_fu, a simple plugin which will try to guess the mimetype of a file based on its extension.
12
+
13
+ Note that mimetype_fu only looks at the extension to define its mime type if you are using Windows!
14
+
15
+ http://github.com/mattetti/mimetype-fu
16
+
17
+ Thanks to forestcarlisle for his big report and patch.
18
+
19
+
20
+ Copyright (c) 2008 Matt Aimonetti, released under the MIT license
data/Rakefile ADDED
@@ -0,0 +1,56 @@
1
+ require 'rake'
2
+ require 'rake/testtask'
3
+ require 'rake/rdoctask'
4
+ require 'spec/rake/spectask'
5
+
6
+ begin
7
+ require 'jeweler'
8
+ Jeweler::Tasks.new do |gem|
9
+ gem.name = "mimetype-fu"
10
+ gem.summary = "get the mimetype of a file directly in Ruby"
11
+ gem.description = "get the mimetype of a file directly in Ruby"
12
+ gem.email = "josh@vitamin-j.com"
13
+ gem.homepage = "http://github.com/jfrench/mimetype-fu"
14
+ gem.authors = ["Josh French"]
15
+ end
16
+
17
+ rescue LoadError
18
+ puts "Jeweler (or a dependency) not available. Install it with: sudo gem install jeweler"
19
+ end
20
+
21
+ desc 'Default: run unit tests.'
22
+ task :default => :spec
23
+
24
+ desc 'Test the mimetype_fu plugin.'
25
+ Rake::TestTask.new(:test) do |t|
26
+ t.libs << 'lib'
27
+ t.pattern = 'test/**/*_test.rb'
28
+ t.verbose = true
29
+ end
30
+
31
+ desc 'Generate documentation for the mimetype_fu plugin.'
32
+ Rake::RDocTask.new(:rdoc) do |rdoc|
33
+ rdoc.rdoc_dir = 'rdoc'
34
+ rdoc.title = 'MimetypeFu'
35
+ rdoc.options << '--line-numbers' << '--inline-source'
36
+ rdoc.rdoc_files.include('README')
37
+ rdoc.rdoc_files.include('lib/**/*.rb')
38
+ end
39
+
40
+ desc 'Run the RSpec tests.'
41
+ Spec::Rake::SpecTask.new(:spec) do |t|
42
+ t.spec_files = FileList['spec/**/*_spec.rb']
43
+ end
44
+
45
+ begin
46
+ require 'rcov/rcovtask'
47
+ Rcov::RcovTask.new do |test|
48
+ test.libs << 'test'
49
+ test.pattern = 'test/**/*_test.rb'
50
+ test.verbose = true
51
+ end
52
+ rescue LoadError
53
+ task :rcov do
54
+ abort "RCov is not available. In order to run rcov, you must: sudo gem install spicycode-rcov"
55
+ end
56
+ end
data/VERSION ADDED
@@ -0,0 +1 @@
1
+ 0.1.1
data/init.rb ADDED
@@ -0,0 +1,2 @@
1
+ require File.dirname(__FILE__) + '/lib/extensions_const'
2
+ require File.dirname(__FILE__) + '/lib/mimetype_fu'
data/install.rb ADDED
@@ -0,0 +1 @@
1
+ # Install hook code here
@@ -0,0 +1,3 @@
1
+ #EXTENSIONS = YAML.load_file(File.dirname(__FILE__) + '/mime_types.yml').symbolize_keys
2
+ EXTENSIONS = {}
3
+ extensions = YAML.load_file(File.dirname(__FILE__) + '/mime_types.yml').each {|k,v| EXTENSIONS[k.to_sym] = v}
@@ -0,0 +1,780 @@
1
+ # EXTENSIONS => CONTENT TYPE
2
+ \"123\": application/vnd.lotus-1-2-3
3
+ \"602\": application/x-t602
4
+ \"669\": audio/x-mod
5
+ 3ds: image/x-3ds
6
+ 3g2: video/3gpp2
7
+ 3gp: video/3gpp
8
+ 3gpp: video/3gpp
9
+ 7z: application/x-7z-compressed
10
+ a: application/x-archive
11
+ aac: audio/mp4
12
+ abw: application/x-abiword
13
+ ac3: audio/ac3
14
+ ace: application/x-ace
15
+ acutc: application/vnd.acucorp
16
+ adb: text/x-adasrc
17
+ ads: text/x-adasrc
18
+ afm: application/x-font-afm
19
+ ag: image/x-applix-graphics
20
+ ai: application/illustrator
21
+ aif: audio/x-aiff
22
+ aifc: audio/x-aiff
23
+ aiff: audio/x-aiff
24
+ al: application/x-perl
25
+ ami: application/vnd.amiga.ami
26
+ amr: audio/AMR
27
+ ani: application/octet-stream
28
+ ape: audio/x-ape
29
+ arj: application/x-arj
30
+ arw: image/x-sony-arw
31
+ as: application/x-applix-spreadsheet
32
+ asc: application/pgp-encrypted
33
+ asf: video/x-ms-asf
34
+ asp: application/x-asp
35
+ ass: text/x-ssa
36
+ asx: audio/x-ms-asx
37
+ atc: application/vnd.acucorp
38
+ atom: application/atom+xml
39
+ au: audio/basic
40
+ avi: video/x-msvideo
41
+ aw: application/x-applix-word
42
+ awb: audio/AMR-WB
43
+ bak: application/x-trash
44
+ bcpio: application/x-bcpio
45
+ bdf: application/x-font-bdf
46
+ bib: text/x-bibtex
47
+ bin: application/x-mac
48
+ bkm: application/vnd.nervana
49
+ blend: application/x-blender
50
+ blender: application/x-blender
51
+ bmp: image/bmp
52
+ bpd: application/vnd.hbci
53
+ builder: application/x-ruby
54
+ bz: application/x-bzip
55
+ bz2: application/x-bzip
56
+ c: text/x-csrc
57
+ c++: text/x-c++src
58
+ cab: application/vnd.ms-cab-compressed
59
+ cbr: application/x-cbr
60
+ cbz: application/x-cbz
61
+ cc: text/x-c++src
62
+ ccc: text/vnd.net2phone.commcenter.command
63
+ cdf: application/x-netcdf
64
+ cdr: application/vnd.corel-draw
65
+ cdy: application/vnd.cinderella
66
+ cer: application/x-x509-ca-cert
67
+ cert: application/x-x509-ca-cert
68
+ cgi: application/x-cgi
69
+ cgm: image/cgm
70
+ chm: application/x-chm
71
+ chrt: application/x-kchart
72
+ chrt: application/vnd.kde.kchart
73
+ cil: application/vnd.ms-artgalry
74
+ class: application/x-java
75
+ cls: text/x-tex
76
+ cmc: application/vnd.cosmocaller
77
+ cpio: application/x-cpio
78
+ cpp: text/x-c++src
79
+ cr2: image/x-canon-cr2
80
+ crl: application/pkix-crl
81
+ crt: application/x-x509-ca-cert
82
+ crw: image/x-canon-crw
83
+ cs: text/x-csharp
84
+ csh: application/x-csh
85
+ css: text/css
86
+ cssl: text/css
87
+ csv: text/csv
88
+ cue: application/x-cue
89
+ cur: image/x-win-bitmap
90
+ curl: application/vnd.curl
91
+ cw: application/prs.cww
92
+ cww: application/prs.cww
93
+ cxx: text/x-c++src
94
+ d: text/x-dsrc
95
+ dar: application/x-dar
96
+ dat: text/plain
97
+ dbf: application/x-dbf
98
+ dc: application/x-dc-rom
99
+ dcl: text/x-dcl
100
+ dcm: application/dicom
101
+ dcr: image/x-kodak-dcr
102
+ dds: image/x-dds
103
+ deb: application/x-deb
104
+ der: application/x-x509-ca-cert
105
+ desktop: application/x-desktop
106
+ dfac: application/vnd.dreamfactory
107
+ dgn: image/x-vnd.dgn
108
+ dia: application/x-dia-diagram
109
+ diff: text/x-patch
110
+ divx: video/x-msvideo
111
+ djv: image/vnd.djvu
112
+ djvu: image/vnd.djvu
113
+ dl: video/dl
114
+ dms: application/octet-stream
115
+ dng: image/x-adobe-dng
116
+ doc: application/msword
117
+ docx: application/msword
118
+ docbook: application/docbook+xml
119
+ dot: application/msword
120
+ dsl: text/x-dsl
121
+ dtd: text/x-dtd
122
+ dtx: text/x-tex
123
+ dv: video/dv
124
+ dvi: application/x-dvi
125
+ dwf: x-drawing/dwf
126
+ dwg: image/vnd.dwg
127
+ dxf: image/vnd.dxf
128
+ ecelp4800: audio/vnd.nuera.ecelp4800
129
+ ecelp7470: audio/vnd.nuera.ecelp7470
130
+ ecelp9600: audio/vnd.nuera.ecelp9600
131
+ efif: application/vnd.picsel
132
+ egon: application/x-egon
133
+ el: text/x-emacs-lisp
134
+ emf: image/x-emf
135
+ emm: application/vnd.ibm.electronic-media
136
+ emp: application/vnd.emusic-emusic_package
137
+ ent: application/vnd.nervana
138
+ entity: application/vnd.nervana
139
+ eol: audio/vnd.digital-winds
140
+ eps: image/x-eps
141
+ epsf: image/x-eps
142
+ epsi: image/x-eps
143
+ erb: text/rhtml
144
+ erl: text/x-erlang
145
+ es: application/ecmascript
146
+ etheme: application/x-e-theme
147
+ etx: text/x-setext
148
+ evc: audio/EVRC
149
+ exe: application/x-executable
150
+ ez: application/andrew-inset
151
+ fig: image/x-xfig
152
+ fits: image/x-fits
153
+ flac: audio/x-flac
154
+ flc: video/x-flic
155
+ fli: video/x-flic
156
+ flo: application/vnd.micrografx.flo
157
+ flv: application/x-flash-video
158
+ flw: application/x-kivio
159
+ fo: text/x-xslfo
160
+ for: text/x-fortran
161
+ fsc: application/vnd.fsc.weblaunch
162
+ g3: image/fax-g3
163
+ gb: application/x-gameboy-rom
164
+ gba: application/x-gba-rom
165
+ gcrd: text/directory
166
+ ged: application/x-gedcom
167
+ gedcom: application/x-gedcom
168
+ gen: application/x-genesis-rom
169
+ gf: application/x-tex-gf
170
+ gg: application/x-sms-rom
171
+ gif: image/gif
172
+ gif: image/gif
173
+ gl: video/gl
174
+ glade: application/x-glade
175
+ gmo: application/x-gettext-translation
176
+ gnc: application/x-gnucash
177
+ gnucash: application/x-gnucash
178
+ gnumeric: application/x-gnumeric
179
+ gnuplot: application/x-gnuplot
180
+ gp: application/x-gnuplot
181
+ gpg: application/pgp-encrypted
182
+ gplt: application/x-gnuplot
183
+ gra: application/x-graphite
184
+ gsf: application/x-font-type1
185
+ gtar: application/x-tar
186
+ gvp: text/x-google-video-pointer
187
+ gz: application/x-gzip
188
+ h: text/x-chdr
189
+ h++: text/x-c++hdr
190
+ hbc: application/vnd.hbci
191
+ hbci: application/vnd.hbci
192
+ hdf: application/x-hdf
193
+ hh: text/x-c++hdr
194
+ hh: text/plain
195
+ hlp: text/plain
196
+ hp: text/x-c++hdr
197
+ hpgl: application/vnd.hp-hpgl
198
+ hpp: text/x-c++hdr
199
+ hqx: application/mac-binhex40
200
+ hs: text/x-haskell
201
+ htc: text/x-component
202
+ htke: application/vnd.kenameaapp
203
+ htm: text/html
204
+ html: text/html
205
+ htmlx: text/html
206
+ htx: text/html
207
+ hvd: application/vnd.yamaha.hv-dic
208
+ hvp: application/vnd.yamaha.hv-voice
209
+ hvs: application/vnd.yamaha.hv-script
210
+ hwp: application/x-hwp
211
+ hwt: application/x-hwt
212
+ hxx: text/x-c++hdr
213
+ ica: application/x-ica
214
+ icb: image/x-tga
215
+ ice: x-conference/x-cooltalk
216
+ icns: image/x-icns
217
+ ico: image/x-ico
218
+ ics: text/calendar
219
+ idl: text/x-idl
220
+ ief: image/ief
221
+ iff: image/x-iff
222
+ iges: model/iges
223
+ igs: model/iges
224
+ igx: application/vnd.micrografx.igx
225
+ ilbm: image/x-ilbm
226
+ ins: text/x-tex
227
+ irm: application/vnd.ibm.rights-management
228
+ irp: application/vnd.irepository.package+xml
229
+ iso: application/x-cd-image
230
+ iso9660: application/x-cd-image
231
+ it: audio/x-it
232
+ j2k: image/jp2
233
+ jad: text/vnd.sun.j2me.app-descriptor
234
+ jar: application/x-java-archive
235
+ java: text/x-java
236
+ jisp: application/vnd.jisp
237
+ jng: image/x-jng
238
+ jnlp: application/x-java-jnlp-file
239
+ jp2: image/jp2
240
+ jpc: image/jp2
241
+ jpe: image/jpeg
242
+ jpeg: image/jpeg
243
+ jpf: image/jp2
244
+ jpg: image/jpeg
245
+ jpm: image/jpm
246
+ jpr: application/x-jbuilder-project
247
+ jpx: image/jpx
248
+ js: application/javascript
249
+ k25: image/x-kodak-k25
250
+ kar: audio/midi
251
+ karbon: application/x-karbon
252
+ kcm: application/vnd.nervana
253
+ kdc: image/x-kodak-kdc
254
+ kdelnk: application/x-desktop
255
+ kfo: application/x-kformula
256
+ kia: application/vnd.kidspiration
257
+ kil: application/x-killustrator
258
+ kino: application/smil
259
+ kne: application/vnd.Kinar
260
+ knp: application/vnd.Kinar
261
+ kom: application/vnd.hbci
262
+ kon: application/x-kontour
263
+ kon: application/vnd.kde.kontour
264
+ kpm: application/x-kpovmodeler
265
+ kpr: application/x-kpresenter
266
+ kpt: application/x-kpresenter
267
+ kra: application/x-krita
268
+ ksp: application/x-kspread
269
+ kud: application/x-kugar
270
+ kwd: application/x-kword
271
+ kwt: application/x-kword
272
+ l16: audio/L16
273
+ la: application/x-shared-library-la
274
+ latex: text/x-tex
275
+ lbd: application/vnd.llamagraphics.life-balance.desktop
276
+ lbe: application/vnd.llamagraphics.life-balance.exchange+xml
277
+ ldif: text/x-ldif
278
+ les: application/vnd.hhe.lesson-player
279
+ lha: application/x-lha
280
+ lhs: text/x-literate-haskell
281
+ lhz: application/x-lhz
282
+ log: text/x-log
283
+ lrm: application/vnd.ms-lrm
284
+ ltx: text/x-tex
285
+ lua: text/x-lua
286
+ lvp: audio/vnd.lucent.voice
287
+ lwo: image/x-lwo
288
+ lwob: image/x-lwo
289
+ lws: image/x-lws
290
+ lyx: application/x-lyx
291
+ lzh: application/x-lha
292
+ lzo: application/x-lzop
293
+ m: text/x-objcsrc
294
+ m15: audio/x-mod
295
+ m2t: video/mpeg
296
+ m3u: audio/x-mpegurl
297
+ m4: application/x-m4
298
+ m4a: audio/mp4
299
+ m4b: audio/x-m4b
300
+ m4u: video/vnd.mpegurl
301
+ m4v: video/mp4
302
+ mab: application/x-markaby
303
+ man: application/x-troff-man
304
+ mcd: application/vnd.mcd
305
+ md: application/x-genesis-rom
306
+ mdb: application/vnd.ms-access
307
+ mdi: image/vnd.ms-modi
308
+ me: text/x-troff-me
309
+ me: application/x-troff-me
310
+ mesh: model/mesh
311
+ mfm: application/vnd.mfmp
312
+ mgp: application/x-magicpoint
313
+ mid: audio/midi
314
+ midi: audio/midi
315
+ mif: application/x-mif
316
+ minipsf: audio/x-minipsf
317
+ mj2: video/MJ2
318
+ mjp2: video/MJ2
319
+ mka: audio/x-matroska
320
+ mkv: video/x-matroska
321
+ ml: text/x-ocaml
322
+ mli: text/x-ocaml
323
+ mm: text/x-troff-mm
324
+ mmf: application/vnd.smaf
325
+ mml: text/mathml
326
+ mng: video/x-mng
327
+ mo: application/x-gettext-translation
328
+ moc: text/x-moc
329
+ mod: audio/x-mod
330
+ moov: video/quicktime
331
+ mov: video/quicktime
332
+ movie: video/x-sgi-movie
333
+ \"mp+\": audio/x-musepack
334
+ mp2: audio/mp2
335
+ mp2: video/mpeg
336
+ mp3: audio/mpeg
337
+ mp3g: video/mpeg
338
+ mp4: video/mp4
339
+ mpc: audio/x-musepack
340
+ mpe: video/mpeg
341
+ mpeg: video/mpeg
342
+ mpg: video/mpeg
343
+ mpga: audio/mpeg
344
+ mpm: application/vnd.blueice.multipass
345
+ mpn: application/vnd.mophun.application
346
+ mpp: application/vnd.ms-project
347
+ mrw: image/x-minolta-mrw
348
+ ms: text/x-troff-ms
349
+ mseq: application/vnd.mseq
350
+ msh: model/mesh
351
+ msod: image/x-msod
352
+ msx: application/x-msx-rom
353
+ mtm: audio/x-mod
354
+ mup: text/x-mup
355
+ mxmf: audio/vnd.nokia.mobile-xmf
356
+ mxu: video/vnd.mpegurl
357
+ n64: application/x-n64-rom
358
+ nb: application/mathematica
359
+ nc: application/x-netcdf
360
+ nds: application/x-nintendo-ds-rom
361
+ nef: image/x-nikon-nef
362
+ nes: application/x-nes-rom
363
+ nfo: text/x-readme
364
+ nim: video/vnd.nokia.interleaved-multimedia
365
+ not: text/x-mup
366
+ nsc: application/x-netshow-channel
367
+ nsv: video/x-nsv
368
+ o: application/x-object
369
+ obj: application/x-tgif
370
+ ocl: text/x-ocl
371
+ oda: application/oda
372
+ odb: application/vnd.oasis.opendocument.database
373
+ odc: application/vnd.oasis.opendocument.chart
374
+ odf: application/vnd.oasis.opendocument.formula
375
+ odg: application/vnd.oasis.opendocument.graphics
376
+ odi: application/vnd.oasis.opendocument.image
377
+ odm: application/vnd.oasis.opendocument.text-master
378
+ odp: application/vnd.oasis.opendocument.presentation
379
+ ods: application/vnd.oasis.opendocument.spreadsheet
380
+ odt: application/vnd.oasis.opendocument.text
381
+ oga: audio/ogg
382
+ ogg: application/ogg
383
+ ogm: video/x-ogm+ogg
384
+ ogv: video/ogg
385
+ ogx: application/ogg
386
+ old: application/x-trash
387
+ oleo: application/x-oleo
388
+ opml: text/x-opml+xml
389
+ oprc: application/vnd.palm
390
+ orf: image/x-olympus-orf
391
+ otg: application/vnd.oasis.opendocument.graphics-template
392
+ oth: application/vnd.oasis.opendocument.text-web
393
+ otp: application/vnd.oasis.opendocument.presentation-template
394
+ ots: application/vnd.oasis.opendocument.spreadsheet-template
395
+ ott: application/vnd.oasis.opendocument.text-template
396
+ owl: text/rdf
397
+ p: text/x-pascal
398
+ p10: application/pkcs10
399
+ p12: application/x-pkcs12
400
+ p7c: application/pkcs7-mime
401
+ p7m: application/pkcs7-mime
402
+ p7s: application/pkcs7-signature
403
+ pak: application/x-pak
404
+ par2: application/x-par2
405
+ pas: text/x-pascal
406
+ patch: text/x-patch
407
+ pbm: image/x-portable-bitmap
408
+ pcd: image/x-photo-cd
409
+ pcf: application/x-font-pcf
410
+ pcl: application/vnd.hp-pcl
411
+ pdb: application/x-palm-database
412
+ pdf: application/pdf
413
+ pef: image/x-pentax-pef
414
+ pem: application/x-x509-ca-cert
415
+ perl: application/x-perl
416
+ pfa: application/x-font-type1
417
+ pfb: application/x-font-type1
418
+ pfr: application/font-tdpfr
419
+ pfx: application/x-pkcs12
420
+ pgb: image/vnd.globalgraphics.pgb
421
+ pgm: image/x-portable-graymap
422
+ pgn: application/x-chess-pgn
423
+ pgp: application/pgp-encrypted
424
+ php: application/x-php
425
+ php3: application/x-php
426
+ php4: application/x-php
427
+ pict: image/x-pict
428
+ pict1: image/x-pict
429
+ pict2: image/x-pict
430
+ pk: application/x-tex-pk
431
+ pkd: application/vnd.hbci
432
+ pki: application/pkixcmp
433
+ pkipath: application/pkix-pkipath
434
+ pkr: application/pgp-keys
435
+ pl: application/x-perl
436
+ pla: audio/x-iriver-pla
437
+ plb: application/vnd.3gpp.pic-bw-large
438
+ plj: audio/vnd.everad.plj
439
+ pln: application/x-planperfect
440
+ pls: audio/x-scpls
441
+ plt: application/vnd.hp-HPGL
442
+ pm: application/x-perl
443
+ png: image/png
444
+ pnm: image/x-portable-anymap
445
+ pntg: image/x-macpaint
446
+ po: text/x-gettext-translation
447
+ pot: application/vnd.ms-powerpoint
448
+ ppm: image/x-portable-pixmap
449
+ pps: application/vnd.ms-powerpoint
450
+ ppt: application/vnd.ms-powerpoint
451
+ pptx: application/vnd.ms-powerpoint
452
+ ppz: application/vnd.ms-powerpoint
453
+ pqa: application/vnd.palm
454
+ prc: application/x-palm-database
455
+ ps: application/postscript
456
+ psb: application/vnd.3gpp.pic-bw-small
457
+ psd: image/x-psd
458
+ psf: application/x-font-linux-psf
459
+ psf: audio/x-psf
460
+ psflib: audio/x-psflib
461
+ psid: audio/prs.sid
462
+ psp: image/x-paintshoppro
463
+ pspimage: image/x-paintshoppro
464
+ pti: application/vnd.pvi.ptid1
465
+ ptid: application/vnd.pvi.ptid1
466
+ pvb: application/vnd.3gpp.pic-bw-var
467
+ pw: application/x-pw
468
+ py: text/x-python
469
+ pyc: application/x-python-bytecode
470
+ pyo: application/x-python-bytecode
471
+ qcp: audio/QCELP
472
+ qif: image/x-quicktime
473
+ qt: video/quicktime
474
+ qtif: image/x-quicktime
475
+ qtl: application/x-quicktime-media-link
476
+ qtvr: video/quicktime
477
+ qwd: application/vnd.Quark.QuarkXPress
478
+ qwt: application/vnd.Quark.QuarkXPress
479
+ qxb: application/vnd.Quark.QuarkXPress
480
+ qxd: application/vnd.Quark.QuarkXPress
481
+ qxl: application/vnd.Quark.QuarkXPress
482
+ qxt: application/vnd.Quark.QuarkXPress
483
+ ra: audio/vnd.rn-realaudio
484
+ raf: image/x-fuji-raf
485
+ ram: audio/x-pn-realaudio
486
+ rar: application/x-rar
487
+ ras: image/x-cmu-raster
488
+ raw: image/x-panasonic-raw
489
+ rax: audio/vnd.rn-realaudio
490
+ rb: application/x-ruby
491
+ rcprofile: application/vnd.ipunplugged.rcprofile
492
+ rct: application/prs.nprend
493
+ rdf: text/rdf
494
+ rdfs: text/rdf
495
+ rdz: application/vnd.data-vision.rdz
496
+ rej: application/x-reject
497
+ req: application/vnd.nervana
498
+ request: application/vnd.nervana
499
+ rgb: image/x-rgb
500
+ rhtml: text/rhtml
501
+ rle: image/rle
502
+ rm: application/vnd.rn-realmedia
503
+ rmj: application/vnd.rn-realmedia
504
+ rmm: application/vnd.rn-realmedia
505
+ rms: application/vnd.rn-realmedia
506
+ rmvb: application/vnd.rn-realmedia
507
+ rmx: application/vnd.rn-realmedia
508
+ rnd: application/prs.nprend
509
+ roff: text/troff
510
+ rp: image/vnd.rn-realpix
511
+ rpm: application/x-rpm
512
+ rpss: application/vnd.nokia.radio-presets
513
+ rpst: application/vnd.nokia.radio-preset
514
+ rss: application/rss+xml
515
+ rst: text/prs.fallenstein.rst
516
+ rt: text/vnd.rn-realtext
517
+ rtf: application/rtf
518
+ rtx: text/richtext
519
+ rxml: application/x-ruby
520
+ rv: video/vnd.rn-realvideo
521
+ rvx: video/vnd.rn-realvideo
522
+ s11: video/vnd.sealed.mpeg1
523
+ s14: video/vnd.sealed.mpeg4
524
+ s1a: application/vnd.sealedmedia.softseal.pdf
525
+ s1e: application/vnd.sealed.xls
526
+ s1g: image/vnd.sealedmedia.softseal.gif
527
+ s1h: application/vnd.sealedmedia.softseal.html
528
+ s1j: image/vnd.sealedmedia.softseal.jpg
529
+ s1m: audio/vnd.sealedmedia.softseal.mpeg
530
+ s1n: image/vnd.sealed.png
531
+ s1p: application/vnd.sealed.ppt
532
+ s1q: video/vnd.sealedmedia.softseal.mov
533
+ s1w: application/vnd.sealed.doc
534
+ s3m: audio/x-s3m
535
+ saf: application/vnd.yamaha.smaf-audio
536
+ sam: application/x-amipro
537
+ sami: application/x-sami
538
+ sc: application/vnd.ibm.secure-container
539
+ scm: text/x-scheme
540
+ sda: application/vnd.stardivision.draw
541
+ sdc: application/vnd.stardivision.calc
542
+ sdd: application/vnd.stardivision.impress
543
+ sdf: application/vnd.Kinar
544
+ sdo: application/vnd.sealed.doc
545
+ sdoc: application/vnd.sealed.doc
546
+ sdp: application/vnd.stardivision.impress
547
+ sds: application/vnd.stardivision.chart
548
+ sdw: application/vnd.stardivision.writer
549
+ see: application/vnd.seemail
550
+ sem: application/vnd.sealed.eml
551
+ seml: application/vnd.sealed.eml
552
+ ser: application/x-java-serialized-object
553
+ sgf: application/x-go-sgf
554
+ sgi: image/vnd.sealedmedia.softseal.gif
555
+ sgif: image/vnd.sealedmedia.softseal.gif
556
+ sgl: application/vnd.stardivision.writer
557
+ sgm: text/sgml
558
+ sgml: text/sgml
559
+ sh: application/x-shellscript
560
+ shar: application/x-shar
561
+ shn: application/x-shorten
562
+ shtml: text/html
563
+ si: text/vnd.wap.si
564
+ siag: application/x-siag
565
+ sic: application/vnd.wap.sic
566
+ sid: audio/prs.sid
567
+ sig: application/pgp-signature
568
+ sik: application/x-trash
569
+ silo: model/mesh
570
+ sis: application/vnd.symbian.install
571
+ sisx: x-epoc/x-sisx-app
572
+ sit: application/stuffit
573
+ siv: application/sieve
574
+ sjp: image/vnd.sealedmedia.softseal.jpg
575
+ sjpg: image/vnd.sealedmedia.softseal.jpg
576
+ skr: application/pgp-keys
577
+ sl: text/vnd.wap.sl
578
+ slc: application/vnd.wap.slc
579
+ slk: text/spreadsheet
580
+ smc: application/x-snes-rom
581
+ smd: application/vnd.stardivision.mail
582
+ smf: application/vnd.stardivision.math
583
+ smh: application/vnd.sealed.mht
584
+ smht: application/vnd.sealed.mht
585
+ smi: application/smil
586
+ smil: application/smil
587
+ sml: application/smil
588
+ smo: video/vnd.sealedmedia.softseal.mov
589
+ smov: video/vnd.sealedmedia.softseal.mov
590
+ smp: audio/vnd.sealedmedia.softseal.mpeg
591
+ smp3: audio/vnd.sealedmedia.softseal.mpeg
592
+ smpg: video/vnd.sealed.mpeg4
593
+ sms: application/vnd.3gpp.sms
594
+ smv: audio/SMV
595
+ snd: audio/basic
596
+ so: application/x-sharedlib
597
+ soc: application/sgml-open-catalog
598
+ spd: application/vnd.sealedmedia.softseal.pdf
599
+ spdf: application/vnd.sealedmedia.softseal.pdf
600
+ spec: text/x-rpm-spec
601
+ spf: application/vnd.yamaha.smaf-phrase
602
+ spl: application/x-shockwave-flash
603
+ spn: image/vnd.sealed.png
604
+ spng: image/vnd.sealed.png
605
+ spp: application/vnd.sealed.ppt
606
+ sppt: application/vnd.sealed.ppt
607
+ spx: audio/x-speex
608
+ sql: text/x-sql
609
+ sr2: image/x-sony-sr2
610
+ src: application/x-wais-source
611
+ srf: image/x-sony-srf
612
+ srt: application/x-subrip
613
+ ssa: text/x-ssa
614
+ ssw: video/vnd.sealed.swf
615
+ sswf: video/vnd.sealed.swf
616
+ stc: application/vnd.sun.xml.calc.template
617
+ std: application/vnd.sun.xml.draw.template
618
+ sti: application/vnd.sun.xml.impress.template
619
+ stk: application/hyperstudio
620
+ stm: application/vnd.sealedmedia.softseal.html
621
+ stml: application/vnd.sealedmedia.softseal.html
622
+ stw: application/vnd.sun.xml.writer.template
623
+ sty: text/x-tex
624
+ sub: text/x-mpsub
625
+ sun: image/x-sun-raster
626
+ sus: application/vnd.sus-calendar
627
+ susp: application/vnd.sus-calendar
628
+ sv4cpio: application/x-sv4cpio
629
+ sv4crc: application/x-sv4crc
630
+ svg: image/svg+xml
631
+ svgz: image/svg+xml-compressed
632
+ swf: application/x-shockwave-flash
633
+ sxc: application/vnd.sun.xml.calc
634
+ sxd: application/vnd.sun.xml.draw
635
+ sxg: application/vnd.sun.xml.writer.global
636
+ sxl: application/vnd.sealed.xls
637
+ sxls: application/vnd.sealed.xls
638
+ sxm: application/vnd.sun.xml.math
639
+ sxw: application/vnd.sun.xml.writer
640
+ sylk: text/spreadsheet
641
+ t: text/troff
642
+ t2t: text/x-txt2tags
643
+ tar: application/x-tar
644
+ tbz: application/x-bzip-compressed-tar
645
+ tbz2: application/x-bzip-compressed-tar
646
+ tcl: text/x-tcl
647
+ tex: text/x-tex
648
+ texi: text/x-texinfo
649
+ texinfo: text/x-texinfo
650
+ tga: image/x-tga
651
+ tgz: application/x-compressed-tar
652
+ theme: application/x-theme
653
+ tif: image/tiff
654
+ tiff: image/tiff
655
+ tk: text/x-tcl
656
+ tnef: application/vnd.ms-tnef
657
+ tnf: application/vnd.ms-tnef
658
+ torrent: application/x-bittorrent
659
+ tpic: image/x-tga
660
+ tr: text/troff
661
+ troff: text/troff
662
+ ts: application/x-linguist
663
+ tsv: text/tab-separated-values
664
+ tta: audio/x-tta
665
+ ttc: application/x-font-ttf
666
+ ttf: application/x-font-ttf
667
+ txd: application/vnd.genomatix.tuxedo
668
+ txt: text/plain
669
+ tzo: application/x-tzo
670
+ ufraw: application/x-ufraw
671
+ ui: application/x-designer
672
+ uil: text/x-uil
673
+ ult: audio/x-mod
674
+ uni: audio/x-mod
675
+ upa: application/vnd.hbci
676
+ url: text/x-uri
677
+ ustar: application/x-ustar
678
+ vala: text/x-vala
679
+ vbk: audio/vnd.nortel.vbk
680
+ vcf: text/x-vcard
681
+ vcs: text/x-vcalendar
682
+ vct: text/directory
683
+ vda: image/x-tga
684
+ vhd: text/x-vhdl
685
+ vhdl: text/x-vhdl
686
+ vis: application/vnd.visionary
687
+ viv: video/vivo
688
+ vivo: video/vivo
689
+ vlc: audio/x-mpegurl
690
+ vob: video/mpeg
691
+ voc: audio/x-voc
692
+ vor: application/vnd.stardivision.writer
693
+ vrml: x-world/x-vrml
694
+ vsc: application/vnd.vidsoft.vidconference
695
+ vsd: application/vnd.visio
696
+ vss: application/vnd.visio
697
+ vst: application/vnd.visio
698
+ vsw: application/vnd.visio
699
+ wav: audio/x-wav
700
+ wax: audio/x-ms-asx
701
+ wb1: application/x-quattropro
702
+ wb2: application/x-quattropro
703
+ wb3: application/x-quattropro
704
+ wbmp: image/vnd.wap.wbmp
705
+ wbs: application/vnd.criticaltools.wbs+xml
706
+ wbxml: application/vnd.wap.wbxml
707
+ wif: application/watcherinfo+xml
708
+ wk1: application/vnd.lotus-1-2-3
709
+ wk3: application/vnd.lotus-1-2-3
710
+ wk4: application/vnd.lotus-1-2-3
711
+ wks: application/vnd.lotus-1-2-3
712
+ wm: video/x-ms-wm
713
+ wma: audio/x-ms-wma
714
+ wmd: application/x-ms-wmd
715
+ wmf: image/x-wmf
716
+ wml: text/vnd.wap.wml
717
+ wmlc: application/vnd.wap.wmlc
718
+ wmls: text/vnd.wap.wmlscript
719
+ wmlsc: application/vnd.wap.wmlscriptc
720
+ wmv: video/x-ms-wmv
721
+ wmx: audio/x-ms-asx
722
+ wmz: application/x-ms-wmz
723
+ wp: application/vnd.wordperfect
724
+ wp4: application/vnd.wordperfect
725
+ wp5: application/vnd.wordperfect
726
+ wp6: application/vnd.wordperfect
727
+ wpd: application/vnd.wordperfect
728
+ wpg: application/x-wpg
729
+ wpl: application/vnd.ms-wpl
730
+ wpp: application/vnd.wordperfect
731
+ wqd: application/vnd.wqd
732
+ wri: application/x-mswrite
733
+ wrl: x-world/x-vrml
734
+ wtb: application/vnd.webturbo
735
+ wv: audio/x-wavpack
736
+ wvc: audio/x-wavpack-correction
737
+ wvp: audio/x-wavpack
738
+ wvx: audio/x-ms-asx
739
+ x_b: model/vnd.parasolid.transmit.binary
740
+ x_t: model/vnd.parasolid.transmit.text
741
+ x3f: image/x-sigma-x3f
742
+ xac: application/x-gnucash
743
+ xbel: application/x-xbel
744
+ xbl: application/xml
745
+ xbm: image/x-xbitmap
746
+ xcf: image/x-xcf
747
+ xfdf: application/vnd.adobe.xfdf
748
+ xhtml: application/xhtml+xml
749
+ xi: audio/x-xi
750
+ xla: application/vnd.ms-excel
751
+ xlc: application/vnd.ms-excel
752
+ xld: application/vnd.ms-excel
753
+ xlf: application/x-xliff
754
+ xliff: application/x-xliff
755
+ xll: application/vnd.ms-excel
756
+ xlm: application/vnd.ms-excel
757
+ xls: application/vnd.ms-excel
758
+ xlsx: application/vnd.ms-excel
759
+ xlt: application/vnd.ms-excel
760
+ xlw: application/vnd.ms-excel
761
+ xm: audio/x-xm
762
+ xmi: text/x-xmi
763
+ xml: text/xml
764
+ xmt_bin: model/vnd.parasolid.transmit.binary
765
+ xmt_txt: model/vnd.parasolid.transmit.text
766
+ xpm: image/x-xpixmap
767
+ xps: application/vnd.ms-xpsdocument
768
+ xsl: application/xml
769
+ xslfo: text/x-xslfo
770
+ xslt: application/xml
771
+ xspf: application/xspf+xml
772
+ xul: application/vnd.mozilla.xul+xml
773
+ xwd: image/x-xwindowdump
774
+ xyz: x-chemical/x-xyz
775
+ yaml: text/x-yaml
776
+ yml: text/x-yaml
777
+ z: application/x-compressed
778
+ zabw: application/x-abiword
779
+ zip: application/zip
780
+ zoo: application/x-zoo
@@ -0,0 +1,33 @@
1
+ require 'tempfile'
2
+ require 'extensions_const'
3
+
4
+ class File
5
+
6
+ def self.mime_type?(file)
7
+ case file
8
+ when File, Tempfile
9
+ unless RUBY_PLATFORM.include? 'mswin32'
10
+ mime = `file --mime -br "#{file.path}"`.strip
11
+ else
12
+ mime = EXTENSIONS[File.extname(file.path).gsub('.','').downcase.to_sym]
13
+ end
14
+ when String
15
+ mime = EXTENSIONS[(file[file.rindex('.')+1, file.size]).downcase.to_sym] unless file.rindex('.').nil?
16
+ when StringIO
17
+ temp = File.open(Dir.tmpdir + '/upload_file.' + Process.pid.to_s, "wb")
18
+ temp << file.string
19
+ temp.close
20
+ mime = `file --mime -br "#{temp.path}"`
21
+ mime = mime.gsub(/^.*: */,"")
22
+ mime = mime.gsub(/;.*$/,"")
23
+ mime = mime.gsub(/,.*$/,"")
24
+ File.delete(temp.path)
25
+ end
26
+ return mime || 'unknown/unknown'
27
+ end
28
+
29
+ def self.extensions
30
+ EXTENSIONS
31
+ end
32
+
33
+ end
@@ -0,0 +1,60 @@
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE DIRECTLY
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
4
+ # -*- encoding: utf-8 -*-
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = %q{mimetype-fu}
8
+ s.version = "0.1.1"
9
+
10
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
+ s.authors = ["Josh French"]
12
+ s.date = %q{2010-01-08}
13
+ s.description = %q{get the mimetype of a file directly in Ruby}
14
+ s.email = %q{josh@vitamin-j.com}
15
+ s.extra_rdoc_files = [
16
+ "README"
17
+ ]
18
+ s.files = [
19
+ "MIT-LICENSE",
20
+ "README",
21
+ "Rakefile",
22
+ "VERSION",
23
+ "init.rb",
24
+ "install.rb",
25
+ "lib/extensions_const.rb",
26
+ "lib/mime_types.yml",
27
+ "lib/mimetype_fu.rb",
28
+ "mimetype-fu.gemspec",
29
+ "spec/fixtures/file.jpg",
30
+ "spec/fixtures/file.rb",
31
+ "spec/fixtures/file.unknown",
32
+ "spec/mime_type_spec.rb",
33
+ "spec/spec_helper.rb",
34
+ "tasks/mimetype_fu_tasks.rake",
35
+ "test/mimetype_fu_test.rb",
36
+ "uninstall.rb"
37
+ ]
38
+ s.homepage = %q{http://github.com/jfrench/mimetype-fu}
39
+ s.rdoc_options = ["--charset=UTF-8"]
40
+ s.require_paths = ["lib"]
41
+ s.rubygems_version = %q{1.3.5}
42
+ s.summary = %q{get the mimetype of a file directly in Ruby}
43
+ s.test_files = [
44
+ "spec/fixtures/file.rb",
45
+ "spec/mime_type_spec.rb",
46
+ "spec/spec_helper.rb",
47
+ "test/mimetype_fu_test.rb"
48
+ ]
49
+
50
+ if s.respond_to? :specification_version then
51
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
52
+ s.specification_version = 3
53
+
54
+ if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
55
+ else
56
+ end
57
+ else
58
+ end
59
+ end
60
+
File without changes
File without changes
File without changes
@@ -0,0 +1,129 @@
1
+ require File.dirname(__FILE__) + '/spec_helper'
2
+ require File.dirname(__FILE__) + '/../lib/mimetype_fu'
3
+
4
+ # Ideally, the two solutions (`file` command versus simply looking at the extension)
5
+ # would return identical results, but thats not the case. `file` differentiates
6
+ # between file sizes, and has a tendency to classify files into the 'application/octet-stream'
7
+ # mimetype, whereas, looking at the ext results in 'unknown/unknown' more often.
8
+
9
+ describe "An open file" do
10
+
11
+ describe "with a zero filelength" do
12
+
13
+ before {create_file('file.empty')}
14
+
15
+ it 'should have a length of zero' do
16
+ File.size(@file).should == 0
17
+ end
18
+
19
+ it_should_have_a_mime_type_of("application/x-empty")
20
+
21
+ end
22
+
23
+ describe 'with a known extension' do
24
+
25
+ before {write_file('file.png', "\211PNG\r\n\032\n", 'wb')}
26
+
27
+ it 'should have a file size of greater than zero' do
28
+ File.size(@file).should > 0
29
+ end
30
+
31
+ it_should_have_an_extension_of('png')
32
+ it_should_have_a_mime_type_of("image/png")
33
+
34
+ end
35
+
36
+ describe 'with spaces in name' do
37
+
38
+ before {write_file('file with spaces.png', "\211PNG\r\n\032\n", 'wb')}
39
+
40
+ it 'should have an extension' do
41
+ File.extname(@file.path).should == '.png'
42
+ end
43
+
44
+ it 'should have a mime type' do
45
+ File.mime_type?(@file).should == "image/png"
46
+ end
47
+
48
+ end
49
+
50
+ describe 'with an unknown extension' do
51
+
52
+ before {write_file('file.unknown', "\211Random\r\n\032\n", 'wb')}
53
+
54
+ it 'should have a file size of greater than zero' do
55
+ File.size(@file).should > 0
56
+ end
57
+
58
+ it_should_have_an_extension_of('unknown')
59
+ it_should_have_a_mime_type_of("application/octet-stream")
60
+
61
+ end
62
+
63
+ describe 'with no extension' do
64
+
65
+ before{write_file('file', "Random\r\n\032\n", 'wb')}
66
+
67
+ it 'should have a file size of greater than zero' do
68
+ File.size(@file).should > 0
69
+ end
70
+
71
+ it_should_have_a_mime_type_of("application/octet-stream")
72
+
73
+ end
74
+
75
+ end
76
+
77
+ describe "A filepath (closed file)" do
78
+
79
+ after(:each) do
80
+ delete_file
81
+ end
82
+
83
+ describe "with a zero filelength" do
84
+
85
+ before {create_file('file.empty'); close}
86
+
87
+ it_should_have_a_mime_type_of("unknown/unknown")
88
+
89
+ end
90
+
91
+ describe 'with a known extension' do
92
+
93
+ before {write_file('file.png', "\211PNG\r\n\032\n", 'wb'); close}
94
+
95
+ it 'should have a file size of greater than zero' do
96
+ File.size(@file).should > 0
97
+ end
98
+
99
+ it_should_have_an_extension_of('png')
100
+ it_should_have_a_mime_type_of("image/png")
101
+
102
+ end
103
+
104
+ describe 'with an unknown extension' do
105
+
106
+ before {write_file('file.unknown', "\211Random\r\n\032\n", 'wb'); close}
107
+
108
+ it 'should have a file size of greater than zero' do
109
+ File.size(@file).should > 0
110
+ end
111
+
112
+ it_should_have_an_extension_of('unknown')
113
+ it_should_have_a_mime_type_of("unknown/unknown")
114
+
115
+ end
116
+
117
+ describe 'with no extension' do
118
+
119
+ before{write_file('file', "Random\r\n\032\n", 'wb'); close}
120
+
121
+ it 'should have a file size of greater than zero' do
122
+ File.size(@file).should > 0
123
+ end
124
+
125
+ it_should_have_a_mime_type_of("unknown/unknown")
126
+
127
+ end
128
+
129
+ end
@@ -0,0 +1,42 @@
1
+ ENV["RAILS_ENV"] = "test"
2
+ require File.expand_path(File.dirname(__FILE__) + "/../../../../config/environment")
3
+ require 'test_help'
4
+
5
+ def create_file(filename, mode='w')
6
+ @file = File.new(File.dirname(__FILE__) + "/fixtures/#{filename}", mode)
7
+ end
8
+
9
+ def close
10
+ @file.close
11
+ @file = @file.path
12
+ end
13
+
14
+ def open_file(filename, mode='r')
15
+ @file = File.open(File.dirname(__FILE__) + "/fixtures/#{filename}", mode)
16
+ end
17
+
18
+ def write_file(filename, data, mode='wb')
19
+ file = create_file(filename, mode)
20
+ file.write(data)
21
+ file.flush
22
+ end
23
+
24
+ def file_or_path(file)
25
+ file.is_a?(File) ? file.path : file
26
+ end
27
+
28
+ def delete_file
29
+ File.delete file_or_path(@file)
30
+ end
31
+
32
+ def it_should_have_an_extension_of(ext)
33
+ it "should have an extension of #{ext}" do
34
+ File.extname(file_or_path(@file)).should == ".#{ext}"
35
+ end
36
+ end
37
+
38
+ def it_should_have_a_mime_type_of(mimetype)
39
+ it "should have a mime type of #{mimetype}" do
40
+ File.mime_type?(@file).should == mimetype
41
+ end
42
+ end
@@ -0,0 +1,4 @@
1
+ # desc "Explaining what the task does"
2
+ # task :mimetype_fu do
3
+ # # Task goes here
4
+ # end
@@ -0,0 +1,8 @@
1
+ require 'test/unit'
2
+
3
+ class MimetypeFuTest < Test::Unit::TestCase
4
+ # Replace this with your real tests.
5
+ def test_this_plugin
6
+ flunk
7
+ end
8
+ end
data/uninstall.rb ADDED
@@ -0,0 +1 @@
1
+ # Uninstall hook code here
metadata ADDED
@@ -0,0 +1,75 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: mimetype-fu
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.1
5
+ platform: ruby
6
+ authors:
7
+ - Josh French
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2010-01-08 00:00:00 -08:00
13
+ default_executable:
14
+ dependencies: []
15
+
16
+ description: get the mimetype of a file directly in Ruby
17
+ email: josh@vitamin-j.com
18
+ executables: []
19
+
20
+ extensions: []
21
+
22
+ extra_rdoc_files:
23
+ - README
24
+ files:
25
+ - MIT-LICENSE
26
+ - README
27
+ - Rakefile
28
+ - VERSION
29
+ - init.rb
30
+ - install.rb
31
+ - lib/extensions_const.rb
32
+ - lib/mime_types.yml
33
+ - lib/mimetype_fu.rb
34
+ - mimetype-fu.gemspec
35
+ - spec/fixtures/file.jpg
36
+ - spec/fixtures/file.rb
37
+ - spec/fixtures/file.unknown
38
+ - spec/mime_type_spec.rb
39
+ - spec/spec_helper.rb
40
+ - tasks/mimetype_fu_tasks.rake
41
+ - test/mimetype_fu_test.rb
42
+ - uninstall.rb
43
+ has_rdoc: true
44
+ homepage: http://github.com/jfrench/mimetype-fu
45
+ licenses: []
46
+
47
+ post_install_message:
48
+ rdoc_options:
49
+ - --charset=UTF-8
50
+ require_paths:
51
+ - lib
52
+ required_ruby_version: !ruby/object:Gem::Requirement
53
+ requirements:
54
+ - - ">="
55
+ - !ruby/object:Gem::Version
56
+ version: "0"
57
+ version:
58
+ required_rubygems_version: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - ">="
61
+ - !ruby/object:Gem::Version
62
+ version: "0"
63
+ version:
64
+ requirements: []
65
+
66
+ rubyforge_project:
67
+ rubygems_version: 1.3.5
68
+ signing_key:
69
+ specification_version: 3
70
+ summary: get the mimetype of a file directly in Ruby
71
+ test_files:
72
+ - spec/fixtures/file.rb
73
+ - spec/mime_type_spec.rb
74
+ - spec/spec_helper.rb
75
+ - test/mimetype_fu_test.rb