ahoward-helene 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (72) hide show
  1. data/Rakefile +274 -0
  2. data/helene.gemspec +26 -0
  3. data/lib/helene.rb +113 -0
  4. data/lib/helene/attempt.rb +46 -0
  5. data/lib/helene/aws.rb +50 -0
  6. data/lib/helene/config.rb +147 -0
  7. data/lib/helene/content_type.rb +15 -0
  8. data/lib/helene/content_type.yml +661 -0
  9. data/lib/helene/error.rb +12 -0
  10. data/lib/helene/logging.rb +55 -0
  11. data/lib/helene/objectpool.rb +220 -0
  12. data/lib/helene/rails.rb +21 -0
  13. data/lib/helene/rightscale/acf/right_acf_interface.rb +379 -0
  14. data/lib/helene/rightscale/awsbase/benchmark_fix.rb +39 -0
  15. data/lib/helene/rightscale/awsbase/right_awsbase.rb +803 -0
  16. data/lib/helene/rightscale/awsbase/support.rb +111 -0
  17. data/lib/helene/rightscale/ec2/right_ec2.rb +1737 -0
  18. data/lib/helene/rightscale/net_fix.rb +160 -0
  19. data/lib/helene/rightscale/right_aws.rb +71 -0
  20. data/lib/helene/rightscale/right_http_connection.rb +507 -0
  21. data/lib/helene/rightscale/s3/right_s3.rb +1094 -0
  22. data/lib/helene/rightscale/s3/right_s3_interface.rb +1180 -0
  23. data/lib/helene/rightscale/sdb/active_sdb.rb +930 -0
  24. data/lib/helene/rightscale/sdb/right_sdb_interface.rb +696 -0
  25. data/lib/helene/rightscale/sqs/right_sqs.rb +388 -0
  26. data/lib/helene/rightscale/sqs/right_sqs_gen2.rb +286 -0
  27. data/lib/helene/rightscale/sqs/right_sqs_gen2_interface.rb +444 -0
  28. data/lib/helene/rightscale/sqs/right_sqs_interface.rb +596 -0
  29. data/lib/helene/s3.rb +34 -0
  30. data/lib/helene/s3/bucket.rb +379 -0
  31. data/lib/helene/s3/grantee.rb +134 -0
  32. data/lib/helene/s3/key.rb +162 -0
  33. data/lib/helene/s3/owner.rb +16 -0
  34. data/lib/helene/sdb.rb +9 -0
  35. data/lib/helene/sdb/base.rb +1204 -0
  36. data/lib/helene/sdb/base/associations.rb +481 -0
  37. data/lib/helene/sdb/base/attributes.rb +90 -0
  38. data/lib/helene/sdb/base/connection.rb +20 -0
  39. data/lib/helene/sdb/base/error.rb +20 -0
  40. data/lib/helene/sdb/base/hooks.rb +82 -0
  41. data/lib/helene/sdb/base/literal.rb +52 -0
  42. data/lib/helene/sdb/base/logging.rb +23 -0
  43. data/lib/helene/sdb/base/transactions.rb +53 -0
  44. data/lib/helene/sdb/base/type.rb +137 -0
  45. data/lib/helene/sdb/base/types.rb +123 -0
  46. data/lib/helene/sdb/base/validations.rb +256 -0
  47. data/lib/helene/sdb/cast.rb +114 -0
  48. data/lib/helene/sdb/connection.rb +36 -0
  49. data/lib/helene/sdb/error.rb +5 -0
  50. data/lib/helene/sdb/interface.rb +412 -0
  51. data/lib/helene/sdb/sentinel.rb +15 -0
  52. data/lib/helene/sleepcycle.rb +29 -0
  53. data/lib/helene/superhash.rb +297 -0
  54. data/lib/helene/util.rb +132 -0
  55. data/test/auth.rb +31 -0
  56. data/test/helper.rb +98 -0
  57. data/test/integration/begin.rb +0 -0
  58. data/test/integration/ensure.rb +8 -0
  59. data/test/integration/s3/bucket.rb +106 -0
  60. data/test/integration/sdb/associations.rb +45 -0
  61. data/test/integration/sdb/creating.rb +13 -0
  62. data/test/integration/sdb/emptiness.rb +56 -0
  63. data/test/integration/sdb/hooks.rb +19 -0
  64. data/test/integration/sdb/limits.rb +27 -0
  65. data/test/integration/sdb/saving.rb +21 -0
  66. data/test/integration/sdb/selecting.rb +39 -0
  67. data/test/integration/sdb/types.rb +31 -0
  68. data/test/integration/sdb/validations.rb +60 -0
  69. data/test/integration/setup.rb +27 -0
  70. data/test/integration/teardown.rb +21 -0
  71. data/test/loader.rb +39 -0
  72. metadata +139 -0
@@ -0,0 +1,50 @@
1
+ module Helene
2
+ class << Helene
3
+ def aws_access_key_id(*value)
4
+ self.aws_access_key_id = value.first unless value.empty?
5
+
6
+ @aws_access_key_id ||= (
7
+ candidates = %w[ AWS_ACCESS_KEY_ID AMAZON_ACCESS_KEY_ID ACCESS_KEY_ID ]
8
+ candidates.each do |candidate|
9
+ return Object.const_get(candidate) if Object.const_defined?(candidate)
10
+ end
11
+ candidates.each do |candidate|
12
+ return ENV[candidate] if ENV[candidate]
13
+ end
14
+ raise Error, 'no configured aws_access_key_id'
15
+ )
16
+ end
17
+ attr_writer :aws_access_key_id
18
+
19
+ def aws_secret_access_key(*value)
20
+ self.aws_secret_access_key = value.first unless value.empty?
21
+
22
+ @aws_secret_access_key ||= (
23
+ candidates = %w[ AWS_SECRET_ACCESS_KEY AMAZON_SECRET_ACCESS_KEY SECRET_ACCESS_KEY ]
24
+ candidates.each do |candidate|
25
+ return Object.const_get(candidate) if Object.const_defined?(candidate)
26
+ end
27
+ candidates.each do |candidate|
28
+ return ENV[candidate] if ENV[candidate]
29
+ end
30
+ raise Error, 'no configured aws_secret_access_key'
31
+ )
32
+ end
33
+ attr_writer :aws_secret_access_key
34
+
35
+ def aws_ca_file(*value)
36
+ self.aws_ca_file = value.first unless value.empty?
37
+
38
+ @aws_ca_file ||= (
39
+ candidates = %w[ AWS_CA_FILE AMAZON_CA_FILE CA_FILE ]
40
+ candidates.each do |candidate|
41
+ return Object.const_get(candidate) if Object.const_defined?(candidate)
42
+ end
43
+ candidates.each do |candidate|
44
+ return ENV[candidate] if ENV[candidate]
45
+ end
46
+ )
47
+ end
48
+ attr_writer :aws_ca_file
49
+ end
50
+ end
@@ -0,0 +1,147 @@
1
+ module Helene
2
+ class Config
3
+ def Config.for(arg)
4
+ config = new
5
+ updates =
6
+ case arg
7
+ when Hash
8
+ arg
9
+ when NilClass
10
+ {}
11
+ else
12
+ if arg.respond_to?(:read)
13
+ YAML.load(arg.read)
14
+ else
15
+ YAML.load(IO.read(arg.to_s))
16
+ end
17
+ end
18
+ config.update(updates)
19
+ config
20
+ end
21
+
22
+ def Config.default_path
23
+ File.join(Helene::Util.homedir, '.helene.yml')
24
+ end
25
+
26
+ def Config.default
27
+ @default ||= (
28
+ update_from_env(
29
+ begin
30
+ Config.for(default_path)
31
+ rescue Errno::ENOENT
32
+ Config.for(nil)
33
+ end
34
+ )
35
+ )
36
+ end
37
+
38
+ def Config.update_from_env config
39
+ =begin
40
+ username = ENV['GNIP_USERNAME']
41
+ password = ENV['GNIP_PASSWORD']
42
+ auth = ENV['GNIP_AUTH']
43
+ if(auth and not (username and password))
44
+ username, password = auth.split(%r/:/, 2)
45
+ end
46
+ uri = ENV['GNIP_URI'] || Helene.default.uri
47
+ config.username = username if username
48
+ config.password = password if password
49
+ config.uri = uri if uri
50
+ config
51
+ =end
52
+ end
53
+
54
+ def Config.normalized hash
55
+ stringified_keys(hash)
56
+ end
57
+
58
+ def Config.stringified_keys hash
59
+ hash.keys.inject(Hash.new){|h,k| h.update(k.to_s => hash.fetch(k))}
60
+ end
61
+
62
+ attr :config
63
+
64
+ def initialize options = {}
65
+ @config = {}
66
+ options.each do |key, value|
67
+ msg = "#{ key }="
68
+ if respond_to?(msg)
69
+ send msg, value
70
+ else
71
+ @config[key.to_s] = value
72
+ end
73
+ end
74
+ end
75
+
76
+ alias_method 'to_hash', 'config'
77
+
78
+ def to_yaml(*args, &block)
79
+ to_hash.to_yaml(*args, &block)
80
+ end
81
+
82
+ def username= username
83
+ config['username'] = username.to_s
84
+ end
85
+ def username
86
+ config['username'].to_s
87
+ end
88
+
89
+ def password= password
90
+ config['password'] = password.to_s
91
+ end
92
+ def password
93
+ config['password'].to_s
94
+ end
95
+
96
+ def uri= uri
97
+ config['uri'] = uri.to_s
98
+ end
99
+ def uri
100
+ URI.parse(config['uri'].to_s) if config['uri']
101
+ end
102
+
103
+ def inspect
104
+ config.inspect
105
+ end
106
+
107
+ def normalize!
108
+ config.replace normalized
109
+ end
110
+
111
+ def normalized hash = config
112
+ Config.normalized(hash)
113
+ end
114
+
115
+ def [] key
116
+ config[key.to_s]
117
+ end
118
+ alias_method 'get', '[]'
119
+
120
+ def []= key, val
121
+ config[key.to_s] = val
122
+ end
123
+ alias_method 'set', '[]='
124
+
125
+ def has_key? key
126
+ config.has_key? key.to_s
127
+ end
128
+
129
+ def update hash
130
+ config.update normalized(hash)
131
+ self
132
+ end
133
+
134
+ def method_missing m, *a, &b
135
+ key, setter = m.to_s.split(/(=)/)
136
+ if setter
137
+ val = a.first
138
+ return(set(key, val))
139
+ end
140
+ if has_key?(key)
141
+ return(get(key))
142
+ end
143
+ super
144
+ end
145
+ end
146
+ end
147
+
@@ -0,0 +1,15 @@
1
+ module Helene
2
+ module ContentType
3
+ unless defined?(@config)
4
+ @config = File.join(File.dirname(__FILE__), 'content_type.yml')
5
+ @table = YAML.load(IO.read(@config))
6
+ end
7
+
8
+ def for(ext)
9
+ @table[ext] || @table[ext.split(%r/[.]/).last.strip.downcase]
10
+ end
11
+ alias_method '[]', 'for'
12
+
13
+ extend self
14
+ end
15
+ end
@@ -0,0 +1,661 @@
1
+ ---
2
+ mny: application/x-msmoney
3
+ rs: application/rls-services+xml
4
+ sbml: application/sbml+xml
5
+ sus: application/vnd.sus-calendar
6
+ mxs: application/vnd.triscape.mxs
7
+ ecelp7470: audio/vnd.nuera.ecelp7470
8
+ hpid: application/vnd.hp-hpid
9
+ mxu: video/vnd.mpegurl
10
+ cxx: text/x-c
11
+ pnm: image/x-portable-anymap
12
+ wspolicy: application/wspolicy+xml
13
+ lzh: application/octet-stream
14
+ sema: application/vnd.sema
15
+ iif: application/vnd.shana.informed.interchange
16
+ ktz: application/vnd.kahootz
17
+ djv: image/vnd.djvu
18
+ rmp: audio/x-pn-realaudio-plugin
19
+ mxml: application/xv+xml
20
+ mbk: application/vnd.mobius.mbk
21
+ "123": application/vnd.lotus-1-2-3
22
+ ami: application/vnd.amiga.ami
23
+ g3: image/g3fax
24
+ zip: application/zip
25
+ xhvml: application/xv+xml
26
+ semd: application/vnd.semd
27
+ jlt: application/vnd.hp-jlyt
28
+ dot: application/msword
29
+ ai: application/postscript
30
+ uris: text/uri-list
31
+ pntg: image/x-macpaint
32
+ cgm: image/cgm
33
+ snd: audio/basic
34
+ mvb: application/x-msmediaview
35
+ sig: application/pgp-signature
36
+ utz: application/vnd.uiq.theme
37
+ csml: chemical/x-csml
38
+ xop: application/xop+xml
39
+ semf: application/vnd.semf
40
+ rms: application/vnd.jcp.javame.midlet-rms
41
+ pnt: image/x-macpaint
42
+ fst: image/vnd.fst
43
+ kwd: application/vnd.kde.kword
44
+ java: text/x-java-source
45
+ f90: text/x-fortran
46
+ wqd: application/vnd.wqd
47
+ dd2: application/vnd.oma.dd2+xml
48
+ mesh: model/mesh
49
+ ccxml: application/ccxml+xml
50
+ fgd: application/x-director
51
+ pbd: application/vnd.powerbuilder6
52
+ kml: application/vnd.google-earth.kml+xml
53
+ ssf: application/vnd.epson.ssf
54
+ acu: application/vnd.acucobol
55
+ clp: application/x-msclip
56
+ atom: application/atom+xml
57
+ fm: application/vnd.framemaker
58
+ sdp: application/sdp
59
+ umj: application/vnd.umajin
60
+ smil: application/smil+xml
61
+ oas: application/vnd.fujitsu.oasys
62
+ uri: text/uri-list
63
+ qti: image/x-quicktime
64
+ m3u: audio/x-mpegurl
65
+ mlp: application/vnd.dolby.mlp
66
+ plb: application/vnd.3gpp.pic-bw-large
67
+ gtm: application/vnd.groove-tool-message
68
+ plc: application/vnd.mobius.plc
69
+ wbs: application/vnd.criticaltools.wbs+xml
70
+ setreg: application/set-registration-initiation
71
+ dmg: application/octet-stream
72
+ djvu: image/vnd.djvu
73
+ au: audio/basic
74
+ bdm: application/vnd.syncml.dm+wbxml
75
+ iso: application/octet-stream
76
+ pqa: application/vnd.palm
77
+ mpeg: video/mpeg
78
+ jp2: image/jp2
79
+ eps: application/postscript
80
+ fli: video/x-fli
81
+ sit: application/x-stuffit
82
+ plf: application/vnd.pocketlearn
83
+ pbm: image/x-portable-bitmap
84
+ cmdf: chemical/x-cmdf
85
+ ram: audio/x-pn-realaudio
86
+ pvb: application/vnd.3gpp.pic-bw-var
87
+ dwf: model/vnd.dwf
88
+ bin: application/octet-stream
89
+ dwg: image/vnd.dwg
90
+ xenc: application/xenc+xml
91
+ oda: application/oda
92
+ dcr: application/x-director
93
+ pgm: image/x-portable-graymap
94
+ fbs: image/vnd.fastbidsheet
95
+ xyz: chemical/x-xyz
96
+ vsd: application/vnd.visio
97
+ class: application/octet-stream
98
+ mgz: application/vnd.proteus.magazine
99
+ dump: application/octet-stream
100
+ list: text/plain
101
+ odc: application/vnd.oasis.opendocument.chart
102
+ wmlc: application/vnd.wap.wmlc
103
+ ps: application/postscript
104
+ pgn: application/x-chess-pgn
105
+ gtw: model/vnd.gtw
106
+ nml: application/vnd.enliven
107
+ kwt: application/vnd.kde.kword
108
+ vsf: application/vnd.vsf
109
+ flo: application/vnd.micrografx.flo
110
+ kmz: application/vnd.google-earth.kmz
111
+ xwd: image/x-xwindowdump
112
+ rar: application/x-rar-compressed
113
+ pgp: application/pgp-encrypted
114
+ bcpio: application/x-bcpio
115
+ ras: image/x-cmu-raster
116
+ odf: application/vnd.oasis.opendocument.formula
117
+ ghf: application/vnd.groove-help
118
+ mqy: application/vnd.mobius.mqy
119
+ dist: application/octet-stream
120
+ xml: application/xml
121
+ texi: application/x-texinfo
122
+ ufd: application/vnd.ufdl
123
+ odg: application/vnd.oasis.opendocument.graphics
124
+ uu: text/x-uuencode
125
+ dms: application/octet-stream
126
+ grxml: application/srgs+xml
127
+ odi: application/vnd.oasis.opendocument.image
128
+ nb: application/mathematica
129
+ torrent: application/x-bittorrent
130
+ edm: application/vnd.novadigm.edm
131
+ wsdl: application/wsdl+xml
132
+ wvx: video/x-ms-wvx
133
+ mp2: audio/mpeg
134
+ nc: application/x-netcdf
135
+ hps: application/vnd.hp-hps
136
+ esf: application/vnd.epson.esf
137
+ setpay: application/set-payment-initiation
138
+ frame: application/vnd.framemaker
139
+ pls: application/pls+xml
140
+ mp3: audio/mpeg
141
+ igl: application/vnd.igloader
142
+ et3: application/vnd.eszigno3+xml
143
+ hpgl: application/vnd.hp-hpgl
144
+ flw: application/vnd.kde.kivio
145
+ vis: application/vnd.visionary
146
+ mp4: video/mp4
147
+ flx: text/vnd.fmi.flexstor
148
+ urls: text/uri-list
149
+ xht: application/xhtml+xml
150
+ exe: application/x-msdownload
151
+ afp: application/vnd.ibm.modcap
152
+ fly: text/vnd.fly
153
+ tex: application/x-tex
154
+ daf: application/vnd.mobius.daf
155
+ wtb: application/vnd.webturbo
156
+ sc: application/vnd.ibm.secure-container
157
+ viv: video/vnd.vivo
158
+ fvt: video/vnd.fvt
159
+ mp4a: audio/mp4
160
+ kar: audio/midi
161
+ jnlp: application/x-java-jnlp-file
162
+ qwd: application/vnd.quark.quarkxpress
163
+ cer: application/pkix-cert
164
+ lbd: application/vnd.llamagraphics.life-balance.desktop
165
+ kfo: application/vnd.kde.kformula
166
+ sgm: text/sgml
167
+ com: application/x-msdownload
168
+ svd: application/vnd.svd
169
+ lbe: application/vnd.llamagraphics.life-balance.exchange+xml
170
+ bh2: application/vnd.fujitsu.oasysprs
171
+ odp: application/vnd.oasis.opendocument.presentation
172
+ unityweb: application/vnd.unity
173
+ hdf: application/x-hdf
174
+ vss: application/vnd.visio
175
+ n-gage: application/vnd.nokia.n-gage.symbian.install
176
+ ecma: application/ecmascript
177
+ text: text/plain
178
+ acutc: application/vnd.acucorp
179
+ atomcat: application/atomcat+xml
180
+ vst: application/vnd.visio
181
+ m1v: video/mpeg
182
+ wmls: text/vnd.wap.wmlscript
183
+ igs: model/iges
184
+ svg: image/svg+xml
185
+ sh: application/x-sh
186
+ dp: application/vnd.osgi.dp
187
+ ods: application/vnd.oasis.opendocument.spreadsheet
188
+ h261: video/h261
189
+ in: text/plain
190
+ odt: application/vnd.oasis.opendocument.text
191
+ rdf: application/rdf+xml
192
+ f77: text/x-fortran
193
+ clkk: application/vnd.crick.clicker.keyboard
194
+ edx: application/vnd.novadigm.edx
195
+ fe_launch: application/vnd.denovo.fcselayout-link
196
+ mseq: application/vnd.mseq
197
+ apr: application/vnd.lotus-approach
198
+ vsw: application/vnd.visio
199
+ h263: video/h263
200
+ xslt: application/xslt+xml
201
+ ftc: application/vnd.fluxtime.clip
202
+ h264: video/h264
203
+ rnc: application/relax-ng-compact-syntax
204
+ rif: application/reginfo+xml
205
+ dpg: application/vnd.dpgraph
206
+ 3gp: video/3gpp
207
+ kpr: application/vnd.kde.kpresenter
208
+ tra: application/vnd.trueapp
209
+ igx: application/vnd.micrografx.igx
210
+ dv: video/x-dv
211
+ m4a: audio/mp4a-latm
212
+ cpio: application/x-cpio
213
+ c4d: application/vnd.clonk.c4group
214
+ ivp: application/vnd.immervision-ivp
215
+ gac: application/vnd.groove-account
216
+ tcl: application/x-tcl
217
+ clkp: application/vnd.crick.clicker.palette
218
+ so: application/octet-stream
219
+ wbxml: application/vnd.wap.wbxml
220
+ slt: application/vnd.epson.salt
221
+ kpt: application/vnd.kde.kpresenter
222
+ c4f: application/vnd.clonk.c4group
223
+ rsd: application/rsd+xml
224
+ movie: video/x-sgi-movie
225
+ mov: video/quicktime
226
+ mts: model/vnd.mts
227
+ grv: application/vnd.groove-injector
228
+ fti: application/vnd.anser-web-funds-transfer-initiation
229
+ c4g: application/vnd.clonk.c4group
230
+ obd: application/x-msbinder
231
+ kia: application/vnd.kidspiration
232
+ mcd: application/vnd.mcd
233
+ ext: application/vnd.novadigm.ext
234
+ xo: application/vnd.olpc-sugar
235
+ aif: audio/x-aiff
236
+ clkt: application/vnd.crick.clicker.template
237
+ elc: application/octet-stream
238
+ cmc: application/vnd.cosmocaller
239
+ twd: application/vnd.simtech-mindmapper
240
+ ivu: application/vnd.immervision-ivu
241
+ ief: image/ief
242
+ btif: image/prs.btif
243
+ shar: application/x-shar
244
+ qwt: application/vnd.quark.quarkxpress
245
+ oxt: application/vnd.openofficeorg.extension
246
+ texinfo: application/x-texinfo
247
+ sv4cpio: application/x-sv4cpio
248
+ clkw: application/vnd.crick.clicker.wordbank
249
+ xar: application/vnd.xara
250
+ chrt: application/vnd.kde.kchart
251
+ asc: application/pgp-signature
252
+ see: application/vnd.seemail
253
+ crd: application/x-mscardfile
254
+ clkx: application/vnd.crick.clicker
255
+ mp4s: application/mp4
256
+ for: text/x-fortran
257
+ wma: audio/x-ms-wma
258
+ mmd: application/vnd.chipnuts.karaoke-mmd
259
+ tmo: application/vnd.tmobile-livetv
260
+ ogg: application/ogg
261
+ mime: message/rfc822
262
+ xpm: image/x-xpixmap
263
+ trm: application/x-msterminal
264
+ mrc: application/marc
265
+ kne: application/vnd.kinar
266
+ wmlsc: application/vnd.wap.wmlscriptc
267
+ asf: video/x-ms-asf
268
+ mp4v: video/mp4
269
+ c4p: application/vnd.clonk.c4group
270
+ gram: application/srgs
271
+ mmf: application/vnd.smaf
272
+ roff: text/troff
273
+ wmd: application/x-ms-wmd
274
+ xul: application/vnd.mozilla.xul+xml
275
+ msty: application/vnd.muvee.style
276
+ qam: application/vnd.epson.quickanime
277
+ chm: application/vnd.ms-htmlhelp
278
+ portpkg: application/vnd.macports.portpkg
279
+ gph: application/vnd.flographit
280
+ lvp: audio/vnd.lucent.voice
281
+ jad: text/vnd.sun.j2me.app-descriptor
282
+ cml: chemical/x-cml
283
+ mp2a: audio/mpeg
284
+ wmf: application/x-msmetafile
285
+ pot: application/vnd.ms-powerpoint
286
+ ddd: application/vnd.fujixerox.ddd
287
+ dic: text/x-c
288
+ m4p: audio/mp4a-latm
289
+ xpr: application/vnd.is-xpr
290
+ rdz: application/vnd.data-vision.rdz
291
+ mbox: application/mbox
292
+ vrml: model/vrml
293
+ dna: application/vnd.dna
294
+ curl: application/vnd.curl
295
+ xps: application/vnd.ms-xpsdocument
296
+ rss: application/rss+xml
297
+ ngdat: application/vnd.nokia.n-gage.data
298
+ crl: application/pkix-crl
299
+ mwf: application/vnd.mfer
300
+ wcm: application/vnd.ms-works
301
+ asm: text/x-asm
302
+ html: text/html
303
+ c4u: application/vnd.clonk.c4group
304
+ stf: application/vnd.wt.stf
305
+ rgb: image/x-rgb
306
+ qtif: image/x-quicktime
307
+ npx: image/vnd.net-fpx
308
+ uoml: application/vnd.uoml+xml
309
+ cmp: application/vnd.yellowriver-custom-menu
310
+ dif: video/x-dv
311
+ sgml: text/sgml
312
+ aso: application/vnd.accpac.simply.aso
313
+ m4u: video/vnd.mpegurl
314
+ wml: text/vnd.wap.wml
315
+ wri: application/x-mswrite
316
+ xpw: application/vnd.intercon.formnet
317
+ rpss: application/vnd.nokia.radio-presets
318
+ m4v: video/mp4
319
+ dsc: text/prs.lines.tag
320
+ latex: application/x-latex
321
+ rpst: application/vnd.nokia.radio-preset
322
+ knp: application/vnd.kinar
323
+ silo: model/mesh
324
+ rlc: image/vnd.fujixerox.edmics-rlc
325
+ xpx: application/vnd.intercon.formnet
326
+ stk: application/hyperstudio
327
+ sdkd: application/vnd.solent.sdkm+xml
328
+ wrl: model/vrml
329
+ mmr: image/vnd.fujixerox.edmics-mmr
330
+ jpe: image/jpeg
331
+ cab: application/vnd.ms-cab-compressed
332
+ chat: application/x-chat
333
+ nnd: application/vnd.noblenet-directory
334
+ ufdl: application/vnd.ufdl
335
+ jam: application/vnd.jam
336
+ mpg4: video/mp4
337
+ m2a: audio/mpeg
338
+ itp: application/vnd.shana.informed.formtemplate
339
+ list3820: application/vnd.ibm.modcap
340
+ ksp: application/vnd.kde.kspread
341
+ xif: image/vnd.xiff
342
+ crt: application/x-x509-ca-cert
343
+ prc: application/vnd.palm
344
+ hvd: application/vnd.yamaha.hv-dic
345
+ pcl: application/vnd.hp-pcl
346
+ log: text/plain
347
+ cmx: image/x-cmx
348
+ jpg: image/jpeg
349
+ bz2: application/x-bzip2
350
+ mpkg: application/vnd.apple.installer+xml
351
+ tcap: application/vnd.3gpp2.tcap
352
+ mac: image/x-macpaint
353
+ dxf: image/vnd.dxf
354
+ pre: application/vnd.lotus-freelance
355
+ ltf: application/vnd.frogans.ltf
356
+ qfx: application/vnd.intu.qfx
357
+ qps: application/vnd.publishare-delta-tree
358
+ prf: application/pics-rules
359
+ nsf: application/vnd.lotus-notes
360
+ bz: application/x-bzip
361
+ ice: x-conference/x-cooltalk
362
+ asx: video/x-ms-asf
363
+ tao: application/vnd.tao.intent-module-archive
364
+ str: application/vnd.pg.format
365
+ jisp: application/vnd.jisp
366
+ xdm: application/vnd.syncml.dm+xml
367
+ oa2: application/vnd.fujitsu.oasys2
368
+ wmv: video/x-ms-wmv
369
+ qt: video/quicktime
370
+ scd: application/x-msschedule
371
+ cww: application/prs.cww
372
+ dir: application/x-director
373
+ pml: application/vnd.ctc-posml
374
+ sdkm: application/vnd.solent.sdkm+xml
375
+ mag: application/vnd.ecowin.chart
376
+ oa3: application/vnd.fujitsu.oasys3
377
+ pkipath: application/pkix-pkipath
378
+ jpm: video/jpm
379
+ conf: text/plain
380
+ tar: application/x-tar
381
+ les: application/vnd.hhe.lesson-player
382
+ dis: application/vnd.mobius.dis
383
+ hlp: application/winhlp
384
+ wmx: video/x-ms-wmx
385
+ gif: image/gif
386
+ xdp: application/vnd.adobe.xdp+xml
387
+ pct: image/x-pict
388
+ ecelp4800: audio/vnd.nuera.ecelp4800
389
+ tpl: application/vnd.groove-tool-template
390
+ wmz: application/x-ms-wmz
391
+ htke: application/vnd.kenameaapp
392
+ zmm: application/vnd.handheld-entertainment+xml
393
+ joda: application/vnd.joost.joda-archive
394
+ jpgm: video/jpm
395
+ gdl: model/vnd.gdl
396
+ xhtml: application/xhtml+xml
397
+ listafp: application/vnd.ibm.modcap
398
+ mpc: application/vnd.mophun.certificate
399
+ shf: application/shf+xml
400
+ xsl: application/xml
401
+ dxp: application/vnd.spotfire.dxp
402
+ mpe: video/mpeg
403
+ man: text/troff
404
+ pcx: image/x-pcx
405
+ aifc: audio/x-aiff
406
+ hvp: application/vnd.yamaha.hv-voice
407
+ otc: application/vnd.oasis.opendocument.chart-template
408
+ nns: application/vnd.noblenet-sealer
409
+ xsm: application/vnd.syncml+xml
410
+ ico: image/x-icon
411
+ src: application/x-wais-source
412
+ dxr: application/x-director
413
+ pwn: application/vnd.3m.post-it-notes
414
+ mpg: video/mpeg
415
+ scm: application/vnd.lotus-screencam
416
+ mfm: application/vnd.mfmp
417
+ ez2: application/vnd.ezpix-album
418
+ gim: application/vnd.groove-identity-message
419
+ xdw: application/vnd.fujixerox.docuworks
420
+ qxb: application/vnd.quark.quarkxpress
421
+ box: application/vnd.previewsystems.box
422
+ wpd: application/vnd.wordperfect
423
+ avi: video/x-msvideo
424
+ aiff: audio/x-aiff
425
+ ez3: application/vnd.ezpix-package
426
+ hvs: application/vnd.yamaha.hv-script
427
+ eol: audio/vnd.digital-winds
428
+ p7b: application/x-pkcs7-certificates
429
+ otf: application/vnd.oasis.opendocument.formula-template
430
+ nnw: application/vnd.noblenet-web
431
+ smi: application/smil+xml
432
+ lha: application/octet-stream
433
+ qxd: application/vnd.quark.quarkxpress
434
+ tpt: application/vnd.trid.tpt
435
+ boz: application/x-bzip2
436
+ ics: text/calendar
437
+ otg: application/vnd.oasis.opendocument.graphics-template
438
+ cdkey: application/vnd.mediastation.cdkey
439
+ hqx: application/mac-binhex40
440
+ dfac: application/vnd.dreamfactory
441
+ p7c: application/pkcs7-mime
442
+ oth: application/vnd.oasis.opendocument.text-web
443
+ jpgv: video/jpeg
444
+ spot: text/vnd.in3d.spot
445
+ swf: application/x-shockwave-flash
446
+ scq: application/scvp-cv-request
447
+ xbd: application/vnd.fujixerox.docuworks.binder
448
+ vcd: application/x-cdlink
449
+ x3d: application/vnd.hzn-3d-crossword
450
+ vxml: application/voicexml+xml
451
+ oti: application/vnd.oasis.opendocument.image-template
452
+ m2v: video/mpeg
453
+ cpp: text/x-c
454
+ vtu: model/vnd.vtu
455
+ mpm: application/vnd.blueice.multipass
456
+ irm: application/vnd.ibm.rights-management
457
+ rcprofile: application/vnd.ipunplugged.rcprofile
458
+ imp: application/vnd.accpac.simply.imp
459
+ fg5: application/vnd.fujitsu.oasysgp
460
+ vcf: text/x-vcard
461
+ tiff: image/tiff
462
+ scs: application/scvp-cv-response
463
+ mpn: application/vnd.mophun.application
464
+ svgz: image/svg+xml
465
+ vcg: application/vnd.groove-vcard
466
+ xla: application/vnd.ms-excel
467
+ wpl: application/vnd.ms-wpl
468
+ cdbcmsg: application/vnd.contact.cmsg
469
+ mpp: application/vnd.ms-project
470
+ irp: application/vnd.irepository.package+xml
471
+ bmi: application/vnd.bmi
472
+ ims: application/vnd.ms-ims
473
+ oprc: application/vnd.palm
474
+ otm: application/vnd.oasis.opendocument.text-master
475
+ tif: image/tiff
476
+ wav: audio/x-wav
477
+ xlc: application/vnd.ms-excel
478
+ eot: application/vnd.ms-fontobject
479
+ mscml: application/mediaservercontrol+xml
480
+ cpt: application/mac-compactpro
481
+ pub: application/x-mspublisher
482
+ ppd: application/vnd.cups-ppd
483
+ qxl: application/vnd.quark.quarkxpress
484
+ pkg: application/octet-stream
485
+ wax: audio/x-ms-wax
486
+ wks: application/vnd.ms-works
487
+ js: application/javascript
488
+ otp: application/vnd.oasis.opendocument.presentation-template
489
+ pict: image/pict
490
+ dll: application/x-msdownload
491
+ mpt: application/vnd.ms-project
492
+ pki: application/pkixcmp
493
+ c: text/x-c
494
+ ifb: text/calendar
495
+ xvml: application/xv+xml
496
+ mdb: application/x-msaccess
497
+ p7m: application/pkcs7-mime
498
+ xbm: image/x-xbitmap
499
+ jpeg: image/jpeg
500
+ cdf: application/x-netcdf
501
+ m13: application/x-msmediaview
502
+ dvi: application/x-dvi
503
+ hbci: application/vnd.hbci
504
+ distz: application/octet-stream
505
+ wps: application/vnd.ms-works
506
+ ots: application/vnd.oasis.opendocument.spreadsheet-template
507
+ mus: application/vnd.musician
508
+ tr: text/troff
509
+ m14: application/x-msmediaview
510
+ ptid: application/vnd.pvi.ptid1
511
+ ott: application/vnd.oasis.opendocument.text-template
512
+ ez: application/andrew-inset
513
+ rtf: application/rtf
514
+ etx: text/x-setext
515
+ f: text/x-fortran
516
+ bmp: image/bmp
517
+ ustar: application/x-ustar
518
+ susp: application/vnd.sus-calendar
519
+ rep: application/vnd.businessobjects
520
+ wdb: application/vnd.ms-works
521
+ txd: application/vnd.genomatix.tuxedo
522
+ pas: text/x-pascal
523
+ cc: text/x-c
524
+ cif: chemical/x-cif
525
+ mpy: application/vnd.ibm.minipay
526
+ saf: application/vnd.yamaha.smaf-audio
527
+ h: text/x-c
528
+ mid: audio/midi
529
+ p7r: application/x-pkcs7-certreqresp
530
+ pfr: application/font-tdpfr
531
+ qxt: application/vnd.quark.quarkxpress
532
+ txf: application/vnd.mobius.txf
533
+ mj2: video/mj2
534
+ htm: text/html
535
+ ppm: image/x-portable-pixmap
536
+ atc: application/vnd.acucorp
537
+ xlm: application/vnd.ms-excel
538
+ p7s: application/pkcs7-signature
539
+ lrm: application/vnd.ms-lrm
540
+ maker: application/vnd.framemaker
541
+ efif: application/vnd.picsel
542
+ srx: application/sparql-results+xml
543
+ pclxl: application/vnd.hp-pclxl
544
+ vcs: text/x-vcalendar
545
+ mdi: image/vnd.ms-modi
546
+ davmount: application/davmount+xml
547
+ mif: application/vnd.mif
548
+ ma: application/mathematica
549
+ cii: application/vnd.anser-web-certificate-issue-initiation
550
+ ei6: application/vnd.pg.osasli
551
+ midi: audio/midi
552
+ xspf: application/xspf+xml
553
+ sitx: application/x-stuffitx
554
+ mb: application/mathematica
555
+ skd: application/vnd.koan
556
+ gqf: application/vnd.grafeq
557
+ ra: audio/x-pn-realaudio
558
+ spc: application/x-pkcs7-certificates
559
+ es3: application/vnd.eszigno3+xml
560
+ twds: application/vnd.simtech-mindmapper
561
+ xfdf: application/vnd.adobe.xfdf
562
+ cil: application/vnd.ms-artgalry
563
+ 3g2: video/3gpp2
564
+ me: text/troff
565
+ aep: application/vnd.audiograph
566
+ nlu: application/vnd.neurolanguage.nlu
567
+ ifm: application/vnd.shana.informed.formdata
568
+ csh: application/x-csh
569
+ hh: text/x-c
570
+ iges: model/iges
571
+ xvm: application/xv+xml
572
+ pfx: application/x-pkcs12
573
+ xls: application/vnd.ms-excel
574
+ pps: application/vnd.ms-powerpoint
575
+ p10: application/pkcs10
576
+ lwp: application/vnd.lotus-wordpro
577
+ vcx: application/vnd.vcx
578
+ p: text/x-pascal
579
+ 3dml: text/vnd.in3d.3dml
580
+ eml: message/rfc822
581
+ ppt: application/vnd.ms-powerpoint
582
+ spf: application/vnd.yamaha.smaf-phrase
583
+ msf: application/vnd.epson.msf
584
+ qbo: application/vnd.intu.qbo
585
+ fpx: image/vnd.fpx
586
+ p12: application/x-pkcs12
587
+ xlt: application/vnd.ms-excel
588
+ org: application/vnd.lotus-organizer
589
+ pdb: chemical/x-pdb
590
+ zaz: application/vnd.zzazz.deck+xml
591
+ fzs: application/vnd.fuzzysheet
592
+ def: text/plain
593
+ msh: model/mesh
594
+ gtar: application/x-gtar
595
+ mxf: application/mxf
596
+ fdf: application/vnd.fdf
597
+ ipk: application/vnd.shana.informed.package
598
+ s: text/x-asm
599
+ mpga: audio/mpeg
600
+ msi: application/x-msdownload
601
+ atomsvc: application/atomsvc+xml
602
+ mathml: application/mathml+xml
603
+ xfdl: application/vnd.xfdl
604
+ t: text/troff
605
+ xlw: application/vnd.ms-excel
606
+ fnc: application/vnd.frogans.fnc
607
+ doc: application/msword
608
+ skm: application/vnd.koan
609
+ tsv: text/tab-separated-values
610
+ pic: image/x-pict
611
+ pdf: application/pdf
612
+ kon: application/vnd.kde.kontour
613
+ txt: text/plain
614
+ cdx: chemical/x-cdx
615
+ spl: application/x-futuresplash
616
+ msl: application/vnd.mobius.msl
617
+ rtx: text/richtext
618
+ cdy: application/vnd.cinderella
619
+ skp: application/vnd.koan
620
+ csp: application/vnd.commonspace
621
+ fsc: application/vnd.fsc.weblaunch
622
+ dtd: application/xml-dtd
623
+ rl: application/resource-lists+xml
624
+ ssml: application/ssml+xml
625
+ sfs: application/vnd.spotfire.sfs
626
+ rm: application/vnd.rn-realmedia
627
+ psb: application/vnd.3gpp.pic-bw-small
628
+ mxl: application/vnd.recordare.musicxml
629
+ mjp2: video/mj2
630
+ css: text/css
631
+ ecelp9600: audio/vnd.nuera.ecelp9600
632
+ m3a: audio/mpeg
633
+ spp: application/scvp-vp-response
634
+ karbon: application/vnd.kde.karbon
635
+ gqs: application/vnd.grafeq
636
+ cdxml: application/vnd.chemdraw+xml
637
+ spq: application/scvp-vp-request
638
+ skt: application/vnd.koan
639
+ cst: application/vnd.commonspace
640
+ wm: video/x-ms-wm
641
+ wbmp: image/vnd.wap.wbmp
642
+ psd: image/vnd.adobe.photoshop
643
+ png: image/png
644
+ sv4crc: application/x-sv4crc
645
+ ktr: application/vnd.kahootz
646
+ bpk: application/octet-stream
647
+ ace: application/x-ace-compressed
648
+ ms: text/troff
649
+ csv: text/csv
650
+ bat: application/x-msdownload
651
+ rq: application/sparql-query
652
+ scpt: application/octet-stream
653
+ cla: application/vnd.claymore
654
+ rmi: audio/midi
655
+ der: application/x-x509-ca-cert
656
+ mc1: application/vnd.medcalcdata
657
+ json: application/json
658
+ atx: application/vnd.antix.game-component
659
+ rb: text/plain
660
+ pl: text/plain
661
+ py: text/plain