waves-stable 0.7.7 → 2009.3.10

Sign up to get free protection for your applications and to get access to all the features.
Files changed (236) hide show
  1. data/bin/waves +20 -74
  2. data/doc/HISTORY +1 -44
  3. data/doc/README +1 -0
  4. data/doc/VERSION +1 -0
  5. data/lib/caches/file.rb +48 -0
  6. data/lib/caches/memcached.rb +40 -0
  7. data/lib/caches/simple.rb +25 -0
  8. data/lib/caches/synchronized.rb +25 -0
  9. data/lib/commands/console.rb +35 -0
  10. data/lib/commands/generate.rb +52 -0
  11. data/lib/commands/help.rb +5 -0
  12. data/lib/commands/{waves-server.rb → server.rb} +16 -3
  13. data/lib/dispatchers/base.rb +22 -21
  14. data/lib/dispatchers/default.rb +10 -66
  15. data/lib/ext/float.rb +13 -0
  16. data/lib/{utilities → ext}/hash.rb +2 -2
  17. data/lib/{utilities → ext}/integer.rb +5 -2
  18. data/lib/ext/kernel.rb +20 -0
  19. data/lib/ext/module.rb +20 -0
  20. data/lib/{utilities → ext}/object.rb +3 -5
  21. data/lib/ext/string.rb +20 -0
  22. data/lib/ext/symbol.rb +11 -0
  23. data/lib/ext/tempfile.rb +5 -0
  24. data/lib/foundations/classic.rb +66 -0
  25. data/lib/foundations/compact.rb +50 -0
  26. data/lib/helpers/basic.rb +11 -0
  27. data/lib/helpers/doc_type.rb +34 -0
  28. data/lib/helpers/extended.rb +21 -0
  29. data/lib/helpers/form.rb +3 -1
  30. data/lib/helpers/formatting.rb +3 -3
  31. data/lib/helpers/layouts.rb +37 -0
  32. data/lib/helpers/model.rb +8 -4
  33. data/lib/helpers/view.rb +2 -4
  34. data/lib/layers/inflect/english.rb +48 -5
  35. data/lib/layers/mvc.rb +18 -18
  36. data/lib/layers/mvc/controllers.rb +41 -0
  37. data/lib/layers/mvc/extensions.rb +52 -0
  38. data/lib/layers/orm/migration.rb +1 -1
  39. data/lib/layers/orm/{active_record.rb → providers/active_record.rb} +9 -14
  40. data/lib/layers/orm/{active_record → providers/active_record}/migrations/empty.rb.erb +0 -0
  41. data/lib/layers/orm/{active_record → providers/active_record}/tasks/generate.rb +1 -1
  42. data/lib/layers/orm/{active_record → providers/active_record}/tasks/schema.rb +1 -1
  43. data/lib/layers/orm/{data_mapper.rb → providers/data_mapper.rb} +3 -4
  44. data/lib/layers/orm/providers/filebase.rb +25 -0
  45. data/lib/layers/orm/{sequel.rb → providers/sequel.rb} +11 -7
  46. data/lib/layers/orm/{sequel → providers/sequel}/migrations/empty.rb.erb +0 -0
  47. data/lib/layers/orm/{sequel → providers/sequel}/tasks/generate.rb +5 -3
  48. data/lib/layers/orm/{sequel → providers/sequel}/tasks/schema.rb +2 -2
  49. data/lib/{renderers → layers/renderers}/erubis.rb +13 -16
  50. data/lib/{renderers → layers/renderers}/haml.rb +27 -25
  51. data/lib/layers/renderers/markaby.rb +29 -0
  52. data/lib/matchers/accept.rb +21 -0
  53. data/lib/matchers/base.rb +30 -0
  54. data/lib/matchers/content_type.rb +17 -0
  55. data/lib/matchers/path.rb +67 -0
  56. data/lib/matchers/query.rb +21 -0
  57. data/lib/matchers/request.rb +27 -0
  58. data/lib/matchers/resource.rb +19 -0
  59. data/lib/matchers/traits.rb +19 -0
  60. data/lib/matchers/uri.rb +20 -0
  61. data/lib/renderers/mixin.rb +15 -29
  62. data/lib/resources/mixin.rb +134 -0
  63. data/lib/resources/paths.rb +34 -0
  64. data/lib/runtime/configuration.rb +51 -136
  65. data/lib/runtime/console.rb +4 -1
  66. data/lib/runtime/logger.rb +24 -48
  67. data/lib/runtime/mime_types.rb +516 -2
  68. data/lib/runtime/mocks.rb +14 -0
  69. data/lib/runtime/monitor.rb +32 -0
  70. data/lib/runtime/request.rb +107 -39
  71. data/lib/runtime/response.rb +5 -2
  72. data/lib/runtime/response_mixin.rb +41 -22
  73. data/lib/runtime/runtime.rb +67 -0
  74. data/lib/runtime/server.rb +14 -101
  75. data/lib/runtime/session.rb +4 -43
  76. data/lib/runtime/worker.rb +86 -0
  77. data/lib/servers/base.rb +42 -0
  78. data/lib/servers/mongrel.rb +13 -0
  79. data/lib/servers/webrick.rb +13 -0
  80. data/lib/tasks/gem.rb +1 -0
  81. data/lib/tasks/generate.rb +67 -62
  82. data/lib/views/errors.rb +49 -0
  83. data/lib/views/mixin.rb +34 -82
  84. data/lib/waves.rb +36 -57
  85. data/samples/blog/Rakefile +16 -5
  86. data/samples/blog/configurations/default.rb +11 -0
  87. data/samples/blog/configurations/development.rb +9 -11
  88. data/samples/blog/configurations/production.rb +11 -15
  89. data/samples/blog/models/comment.rb +9 -0
  90. data/samples/blog/models/entry.rb +17 -0
  91. data/samples/blog/public/css/site.css +13 -2
  92. data/samples/blog/public/javascript/jquery-1.2.6.min.js +32 -0
  93. data/samples/blog/resources/entry.rb +39 -0
  94. data/samples/blog/resources/map.rb +9 -0
  95. data/samples/blog/schema/migrations/001_initial_schema.rb +3 -3
  96. data/samples/blog/schema/migrations/002_add_comments.rb +2 -2
  97. data/samples/blog/startup.rb +8 -6
  98. data/samples/blog/templates/comment/add.mab +6 -4
  99. data/samples/blog/templates/comment/list.mab +4 -4
  100. data/samples/blog/templates/entry/{editor.mab → edit.mab} +7 -6
  101. data/samples/blog/templates/entry/list.mab +10 -5
  102. data/samples/blog/templates/entry/show.mab +16 -7
  103. data/samples/blog/templates/entry/summary.mab +8 -4
  104. data/samples/blog/templates/errors/not_found_404.mab +6 -1
  105. data/samples/blog/templates/layouts/default.mab +5 -3
  106. data/samples/blog/templates/waves/status.mab +85 -0
  107. data/{app → templates/classic}/Rakefile +21 -3
  108. data/templates/classic/configurations/default.rb.erb +9 -0
  109. data/{app → templates/classic}/configurations/development.rb.erb +3 -8
  110. data/{app → templates/classic}/configurations/production.rb.erb +3 -5
  111. data/{app → templates/classic}/controllers/.gitignore +0 -0
  112. data/{app/doc → templates/classic/helpers}/.gitignore +0 -0
  113. data/{app/helpers → templates/classic/lib/tasks}/.gitignore +0 -0
  114. data/{app/lib/tasks → templates/classic/models}/.gitignore +0 -0
  115. data/{app/log → templates/classic/public/css}/.gitignore +0 -0
  116. data/{app/models → templates/classic/public/flash}/.gitignore +0 -0
  117. data/{app/public/css → templates/classic/public/images}/.gitignore +0 -0
  118. data/{app/public/flash → templates/classic/public/javascript}/.gitignore +0 -0
  119. data/{app/public/images → templates/classic/resources}/.gitignore +0 -0
  120. data/templates/classic/resources/map.rb.erb +8 -0
  121. data/{app/public/javascript → templates/classic/schema/migrations}/.gitignore +0 -0
  122. data/templates/classic/startup.rb.erb +11 -0
  123. data/templates/classic/templates/errors/not_found_404.mab +7 -0
  124. data/templates/classic/templates/errors/server_error_500.mab +7 -0
  125. data/{app → templates/classic}/templates/layouts/default.mab +0 -0
  126. data/{app/schema/migrations → templates/classic/tmp/sessions}/.gitignore +0 -0
  127. data/{app/tmp/sessions → templates/classic/views}/.gitignore +0 -0
  128. data/templates/compact/startup.rb.erb +11 -0
  129. metadata +152 -258
  130. data/app/bin/waves-console +0 -4
  131. data/app/bin/waves-server +0 -4
  132. data/app/configurations/mapping.rb.erb +0 -14
  133. data/app/lib/application.rb.erb +0 -5
  134. data/app/startup.rb +0 -5
  135. data/app/templates/errors/not_found_404.mab +0 -2
  136. data/app/templates/errors/server_error_500.mab +0 -2
  137. data/app/views/.gitignore +0 -0
  138. data/bin/waves-console +0 -4
  139. data/bin/waves-server +0 -4
  140. data/lib/commands/waves-console.rb +0 -21
  141. data/lib/controllers/base.rb +0 -11
  142. data/lib/controllers/mixin.rb +0 -165
  143. data/lib/foundations/default.rb +0 -27
  144. data/lib/foundations/simple.rb +0 -30
  145. data/lib/helpers/asset_helper.rb +0 -67
  146. data/lib/helpers/common.rb +0 -66
  147. data/lib/helpers/default.rb +0 -13
  148. data/lib/helpers/number_helper.rb +0 -25
  149. data/lib/helpers/tag_helper.rb +0 -58
  150. data/lib/helpers/url_helper.rb +0 -77
  151. data/lib/layers/default_errors.rb +0 -26
  152. data/lib/layers/inflect/english/rules.rb +0 -88
  153. data/lib/layers/inflect/english/string.rb +0 -24
  154. data/lib/layers/orm/filebase.rb +0 -22
  155. data/lib/layers/simple.rb +0 -32
  156. data/lib/layers/simple_errors.rb +0 -23
  157. data/lib/mapping/mapping.rb +0 -289
  158. data/lib/mapping/pretty_urls.rb +0 -96
  159. data/lib/renderers/markaby.rb +0 -33
  160. data/lib/runtime/application.rb +0 -69
  161. data/lib/runtime/blackboard.rb +0 -57
  162. data/lib/runtime/debugger.rb +0 -9
  163. data/lib/runtime/response_proxy.rb +0 -30
  164. data/lib/tasks/cluster.rb +0 -26
  165. data/lib/utilities/inflect.rb +0 -110
  166. data/lib/utilities/module.rb +0 -21
  167. data/lib/utilities/proc.rb +0 -16
  168. data/lib/utilities/string.rb +0 -49
  169. data/lib/utilities/symbol.rb +0 -10
  170. data/lib/utilities/tempfile.rb +0 -9
  171. data/lib/views/base.rb +0 -9
  172. data/samples/blog/bin/waves-console +0 -3
  173. data/samples/blog/bin/waves-server +0 -3
  174. data/samples/blog/configurations/mapping.rb +0 -23
  175. data/samples/blog/doc/EMTPY +0 -0
  176. data/samples/blog/lib/application.rb +0 -5
  177. data/verify/app_generation/helpers.rb +0 -24
  178. data/verify/app_generation/startup.rb +0 -39
  179. data/verify/blackboard/blackboard_verify.rb +0 -92
  180. data/verify/blackboard/helpers.rb +0 -5
  181. data/verify/configurations/attributes.rb +0 -37
  182. data/verify/configurations/helpers.rb +0 -1
  183. data/verify/configurations/rack_integration.rb +0 -29
  184. data/verify/controllers/base.rb +0 -37
  185. data/verify/controllers/helpers.rb +0 -13
  186. data/verify/controllers/interface.rb +0 -51
  187. data/verify/core/helpers.rb +0 -3
  188. data/verify/core/utilities.rb +0 -177
  189. data/verify/foundations/default.rb +0 -86
  190. data/verify/foundations/default_application/Rakefile +0 -14
  191. data/verify/foundations/default_application/bin/waves-console +0 -3
  192. data/verify/foundations/default_application/bin/waves-server +0 -3
  193. data/verify/foundations/default_application/configurations/development.rb +0 -26
  194. data/verify/foundations/default_application/configurations/mapping.rb +0 -14
  195. data/verify/foundations/default_application/configurations/production.rb +0 -30
  196. data/verify/foundations/default_application/controllers/default.rb +0 -15
  197. data/verify/foundations/default_application/controllers/loaded.rb +0 -15
  198. data/verify/foundations/default_application/defaultapplication.db +0 -0
  199. data/verify/foundations/default_application/helpers/loaded.rb +0 -10
  200. data/verify/foundations/default_application/lib/application.rb +0 -5
  201. data/verify/foundations/default_application/models/default.rb +0 -13
  202. data/verify/foundations/default_application/models/loaded.rb +0 -13
  203. data/verify/foundations/default_application/schema/migrations/templates/empty.rb.erb +0 -9
  204. data/verify/foundations/default_application/startup.rb +0 -7
  205. data/verify/foundations/default_application/templates/errors/not_found_404.mab +0 -2
  206. data/verify/foundations/default_application/templates/errors/server_error_500.mab +0 -2
  207. data/verify/foundations/default_application/templates/layouts/default.mab +0 -14
  208. data/verify/foundations/default_application/views/default.rb +0 -7
  209. data/verify/foundations/default_application/views/loaded.rb +0 -15
  210. data/verify/foundations/helpers.rb +0 -1
  211. data/verify/foundations/simple.rb +0 -25
  212. data/verify/helpers.rb +0 -76
  213. data/verify/layers/data_mapper/association_verify.rb +0 -87
  214. data/verify/layers/default_errors.rb +0 -29
  215. data/verify/layers/helpers.rb +0 -1
  216. data/verify/layers/migration.rb +0 -33
  217. data/verify/layers/sequel/model.rb +0 -41
  218. data/verify/mapping/always.rb +0 -19
  219. data/verify/mapping/filters.rb +0 -65
  220. data/verify/mapping/handle.rb +0 -24
  221. data/verify/mapping/helpers.rb +0 -7
  222. data/verify/mapping/matches.rb +0 -27
  223. data/verify/mapping/named.rb +0 -29
  224. data/verify/mapping/options.rb +0 -17
  225. data/verify/mapping/path.rb +0 -40
  226. data/verify/mapping/response_proxy.rb +0 -50
  227. data/verify/mapping/threaded.rb +0 -25
  228. data/verify/requests/helpers.rb +0 -16
  229. data/verify/requests/request.rb +0 -73
  230. data/verify/requests/response.rb +0 -59
  231. data/verify/requests/session.rb +0 -54
  232. data/verify/views/helpers.rb +0 -1
  233. data/verify/views/rendering.rb +0 -34
  234. data/verify/views/templates/foo.erb +0 -0
  235. data/verify/views/templates/moo.erb +0 -0
  236. data/verify/views/templates/moo.mab +0 -0
@@ -1,6 +1,7 @@
1
+ require 'runtime/mocks'
1
2
  module Waves
2
3
 
3
- class Console < Application
4
+ class Console < Runtime
4
5
 
5
6
  class << self
6
7
 
@@ -8,6 +9,8 @@ module Waves
8
9
 
9
10
  def load( options={} )
10
11
  @console ||= Waves::Console.new( options )
12
+ Kernel.load( options[:startup] || 'startup.rb' )
13
+ Object.instance_eval { include Waves::Mocks }
11
14
  end
12
15
 
13
16
  # allow Waves::Console to act as The Console Instance
@@ -1,56 +1,32 @@
1
1
  require 'logger'
2
2
  module Waves
3
3
 
4
- # Waves::Logger is based on Ruby's built-in Logger. It uses the same filtering approach
5
- # (debug, info, warn, error, fatal), although the interface is slightly different.
6
- # You won't typically instantiate this class directly; instead, you will specify the
7
- # logging configuration you want in your configuration files. See Waves::Configurations
8
- # for more information on this.
9
- #
10
- # To use the logger for output, you can usually just call +log+, since the Waves::ResponseHelper
11
- # mixin defines it (meaning it is available in the mapping file, controllers, views, and
12
- # templates). Or, you can access Waves::Logger directly. Either way, the logger provides five
13
- # methods for output corresponding to the log levels.
14
- #
15
- # *Examples*
16
- # # log the value of foo
17
- # log.info "Value of foo: #{foo}"
18
- #
19
- # # fatal error!
20
- # Waves::Logger.fatal "She can't hold up any longer, cap'n!"
21
- #
22
4
  module Logger
23
5
 
24
- class << self
25
-
26
- # Returns the object being used for output by the logger.
27
- def output
28
- @output ||= ( config[:output] ? File.expand_path( config[:output] ) : $stderr )
29
- end
30
-
31
- # Returns the active configuration for the logger.
32
- def config
33
- @config ||= Waves::Server.config.log
34
- end
35
-
36
- # Returns the logging level used to filter logging events.
37
- def level ; @level ||= ::Logger.const_get( config[:level].to_s.upcase || 'INFO' ) ; end
38
-
39
- # Starts the logger, using the active configuration to initialize it.
40
- def start
41
- @log = config[:rotation] ?
42
- ::Logger.new( output, config[:rotation].intern ) :
43
- ::Logger.new( output )
44
- @log.level = level
45
- @log.datetime_format = "%Y-%m-%d %H:%M:%S "
46
- self
47
- end
48
-
49
- # Forwards logging methods to the logger.
50
- def method_missing(name,*args,&block)
51
- @log.send name,*args, &block if @log
52
- end
53
-
6
+ # Returns the object being used for output by the logger.
7
+ def self.output
8
+ @output ||= ( config[:output] or $stderr )
9
+ end
10
+
11
+ # Returns the active configuration for the logger.
12
+ def self.config ; @config ||= Waves.config.log ; end
13
+
14
+ # Returns the logging level used to filter logging events.
15
+ def self.level ; @level ||= ::Logger.const_get( config[:level].to_s.upcase || 'INFO' ) ; end
16
+
17
+ # Starts the logger, using the active configuration to initialize it.
18
+ def self.start
19
+ @log = config[:rotation] ?
20
+ ::Logger.new( output, config[:rotation].to_sym ) :
21
+ ::Logger.new( output )
22
+ @log.level = level
23
+ @log.datetime_format = "%Y-%m-%d %H:%M:%S "
24
+ self
25
+ end
26
+
27
+ # Forwards logging methods to the logger.
28
+ def self.method_missing(name,*args,&block)
29
+ @log.send name,*args, &block if @log
54
30
  end
55
31
 
56
32
  end
@@ -1,7 +1,7 @@
1
1
  module Waves
2
2
 
3
3
  # Waves::MimeTypes defines an interface for adding MIME types used in mapping requests
4
- # to content types. Mongrel's MIME_TYPES hash is used as the baseline MIME map.
4
+ # to content types. Originally taken from Mongrel.
5
5
 
6
6
  module MimeTypes
7
7
 
@@ -15,8 +15,522 @@ module Waves
15
15
  end
16
16
 
17
17
  def self.mapping
18
- @mapping ||= Mongrel::DirHandler::MIME_TYPES
18
+ @mapping ||= Waves::MIME_TYPES
19
19
  end
20
20
 
21
21
  end
22
+
23
+ MIME_TYPES = {
24
+ ".skd"=>"application/x-koan",
25
+ ".el"=>"text/x-script.elisp",
26
+ ".iges"=>"application/iges",
27
+ ".iefs"=>"image/ief",
28
+ ".omcr"=>"application/x-omcregerator",
29
+ ".spc"=>"text/x-speech",
30
+ ".mng"=>"video/x-mng",
31
+ ".deb"=>"application/octet-stream",
32
+ ".mzz"=>"application/x-vnd.audioexplosion.mzz",
33
+ ".csh"=>"text/x-script.csh",
34
+ ".pfx"=>"application/x-pkcs12",
35
+ ".lhx"=>"application/octet-stream",
36
+ ".xls"=>"application/excel",
37
+ ".wsc"=>"text/scriplet",
38
+ ".tsp"=>"audio/tsplayer",
39
+ ".ccad"=>"application/clariscad",
40
+ ".mpga"=>"audio/mpeg",
41
+ ".pps"=>"application/mspowerpoint",
42
+ ".htt"=>"text/webviewhtml",
43
+ ".texinfo"=>"application/x-texinfo",
44
+ ".p10"=>"application/x-pkcs10",
45
+ ".xlt"=>"application/excel",
46
+ ".ppt"=>"application/mspowerpoint",
47
+ ".es"=>"application/x-esrehber",
48
+ ".fdf"=>"application/vnd.fdf",
49
+ ".def"=>"text/plain",
50
+ ".p12"=>"application/x-pkcs12",
51
+ ".pdb"=>"application/x-pilot",
52
+ ".fpx"=>"image/vnd.net-fpx",
53
+ ".xlv"=>"application/excel",
54
+ ".tk"=>"application/x-tcl",
55
+ ".msi"=>"application/octet-stream",
56
+ ".xlw"=>"application/excel",
57
+ ".xgz"=>"xgl/drawing",
58
+ ".wsrc"=>"application/x-wais-source",
59
+ ".vrt"=>"x-world/x-vrt",
60
+ ".htx"=>"text/html",
61
+ ".js"=>"text/javascript",
62
+ ".fif"=>"image/fif",
63
+ ".pic"=>"image/pict",
64
+ ".doc"=>"application/msword",
65
+ ".setpay"=>"application/set-payment-initiation",
66
+ ".skm"=>"application/x-koan",
67
+ ".tsv"=>"text/tab-separated-values",
68
+ ".pdf"=>"application/pdf",
69
+ ".txt"=>"text/plain",
70
+ ".ppz"=>"application/mspowerpoint",
71
+ ".spl"=>"application/futuresplash",
72
+ ".msm"=>"application/octet-stream",
73
+ ".rexx"=>"text/x-script.rexx",
74
+ ".skp"=>"application/x-koan",
75
+ ".rtx"=>"text/richtext",
76
+ ".jpeg"=>"image/jpeg",
77
+ ".tr"=>"application/x-troff",
78
+ ".css"=>"text/css",
79
+ ".lam"=>"audio/x-liveaudio",
80
+ ".msp"=>"application/octet-stream",
81
+ ".sv4cpio"=>"application/x-sv4cpio",
82
+ ".cc"=>"text/plain",
83
+ ".tbk"=>"application/x-tbook",
84
+ ".class"=>"application/octet-stream",
85
+ ".png"=>"image/png",
86
+ ".acgi"=>"text/html",
87
+ ".psd"=>"application/octet-stream",
88
+ ".skt"=>"application/x-koan",
89
+ ".spr"=>"application/x-sprite",
90
+ ".idc"=>"text/plain",
91
+ ".bas"=>"text/plain",
92
+ ".gtar"=>"application/x-gtar",
93
+ ".bcpio"=>"application/x-bcpio",
94
+ ".xof"=>"x-world/x-vrml",
95
+ ".der"=>"application/x-x509-ca-cert",
96
+ ".mbd"=>"application/mbedlet",
97
+ ".rmi"=>"audio/mid",
98
+ ".turbot"=>"image/florian",
99
+ ".mc"=>"application/x-magic-cap-package-1.0",
100
+ ".ra"=>"audio/x-realaudio",
101
+ ".xpix"=>"application/x-vnd.ls-xpix",
102
+ ".wiz"=>"application/msword",
103
+ ".cxx"=>"text/plain",
104
+ ".me"=>"application/x-troff-me",
105
+ ".lzh"=>"application/x-lzh",
106
+ ".hh"=>"text/plain",
107
+ ".arc"=>"application/octet-stream",
108
+ ".rmm"=>"audio/x-pn-realaudio",
109
+ ".pnm"=>"image/x-portable-anymap",
110
+ ".zsh"=>"text/x-script.zsh",
111
+ ".sid"=>"audio/x-psid",
112
+ ".pfunk"=>"audio/make.my.funk",
113
+ ".zip"=>"application/zip",
114
+ ".wbmp"=>"image/vnd.wap.wbmp",
115
+ ".rmp"=>"audio/x-pn-realaudio-plugin",
116
+ ".iii"=>"application/x-iphone",
117
+ ".snd"=>"audio/x-adpcm",
118
+ ".rf"=>"image/vnd.rn-realflash",
119
+ ".mvb"=>"application/x-msmediaview",
120
+ ".qtc"=>"video/x-qtc",
121
+ ".rast"=>"image/cmu-raster",
122
+ ".arj"=>"application/octet-stream",
123
+ ".ear"=>"application/java-archive",
124
+ ".mm"=>"application/x-meme",
125
+ ".funk"=>"audio/make",
126
+ ".smil"=>"application/smil",
127
+ ".f90"=>"text/x-fortran",
128
+ ".vda"=>"application/vda",
129
+ ".tgz"=>"application/x-compressed",
130
+ ".clp"=>"application/x-msclip",
131
+ ".word"=>"application/msword",
132
+ ".rm"=>"audio/x-pn-realaudio",
133
+ ".sdp"=>"application/x-sdp",
134
+ ".uri"=>"text/uri-list",
135
+ ".latex"=>"application/x-latex",
136
+ ".mpeg"=>"video/mpeg",
137
+ ".ssi"=>"text/x-server-parsed-html",
138
+ ".qti"=>"image/x-quicktime",
139
+ ".m3u"=>"audio/x-mpegurl",
140
+ ".dhh"=>"application/david-heinemeier-hansson",
141
+ ".sdr"=>"application/sounder",
142
+ ".rp"=>"image/vnd.rn-realpix",
143
+ ".ms"=>"application/x-troff-ms",
144
+ ".dmg"=>"application/octet-stream",
145
+ ".deepv"=>"application/x-deepv",
146
+ ".iso"=>"application/octet-stream",
147
+ ".eps"=>"application/postscript",
148
+ ".jfif-tbnl"=>"image/jpeg",
149
+ ".ssm"=>"application/streamingmedia",
150
+ ".lzx"=>"application/x-lzx",
151
+ ".isp"=>"application/x-internet-signup",
152
+ ".wp"=>"application/wordperfect",
153
+ ".ins"=>"application/x-internett-signup",
154
+ ".art"=>"image/x-jg",
155
+ ".mv"=>"video/x-sgi-movie",
156
+ ".fli"=>"video/x-fli",
157
+ ".sit"=>"application/x-stuffit",
158
+ ".rt"=>"text/vnd.rn-realtext",
159
+ ".movie"=>"video/x-sgi-movie",
160
+ ".hpg"=>"application/vnd.hp-hpgl",
161
+ ".htmls"=>"text/html",
162
+ ".sprite"=>"application/x-sprite",
163
+ ".ram"=>"audio/x-pn-realaudio",
164
+ ".pbm"=>"image/x-portable-bitmap",
165
+ ".ncm"=>"application/vnd.nokia.configuration-message",
166
+ ".bin"=>"application/octet-stream",
167
+ ".pm4"=>"application/x-pagemaker",
168
+ ".bsh"=>"application/x-bsh",
169
+ ".lsf"=>"video/x-la-asf",
170
+ ".oda"=>"application/oda",
171
+ ".rv"=>"video/vnd.rn-realvideo",
172
+ ".pm5"=>"application/x-pagemaker",
173
+ ".atom"=>"application/atom+xml",
174
+ ".my"=>"audio/make",
175
+ ".vsd"=>"application/x-visio",
176
+ ".dwg"=>"image/x-dwg",
177
+ ".dcr"=>"application/x-director",
178
+ ".isu"=>"video/x-isvideo",
179
+ ".xyz"=>"chemical/x-pdb",
180
+ ".texi"=>"application/x-texinfo",
181
+ ".part"=>"application/pro_eng",
182
+ ".pgm"=>"image/x-portable-greymap",
183
+ ".g3"=>"image/g3fax",
184
+ ".ai"=>"application/postscript",
185
+ ".flo"=>"image/florian",
186
+ ".a"=>"application/octet-stream",
187
+ ".xwd"=>"image/x-xwindowdump",
188
+ ".vdo"=>"video/vdo",
189
+ ".rar"=>"application/x-rar-compressed",
190
+ ".sst"=>"application/vnd.ms-pkicertstore",
191
+ ".wmlsc"=>"application/vnd.wap.wmlscriptc",
192
+ ".web"=>"application/vnd.xara",
193
+ ".uris"=>"text/uri-list",
194
+ ".ras"=>"image/x-cmu-raster",
195
+ ".c"=>"text/plain",
196
+ ".cod"=>"image/cis-cod",
197
+ ".qd3"=>"x-world/x-3dmf",
198
+ ".flr"=>"x-world/x-vrml",
199
+ ".xml"=>"text/xml",
200
+ ".hpgl"=>"application/vnd.hp-hpgl",
201
+ ".dms"=>"application/octet-stream",
202
+ ".afl"=>"video/animaflex",
203
+ ".rpm"=>"audio/x-pn-realaudio-plugin",
204
+ ".mjf"=>"audio/x-vnd.audioexplosion.mjuicemediafile",
205
+ ".f"=>"text/x-fortran",
206
+ ".java"=>"text/x-java-source",
207
+ ".mod"=>"audio/mod",
208
+ ".jardiff"=>"application/x-java-archive-diff",
209
+ ".g"=>"text/plain",
210
+ ".wk1"=>"application/x-123",
211
+ ".h"=>"text/plain",
212
+ ".lsp"=>"text/x-script.lisp",
213
+ ".sbk"=>"application/x-tbook",
214
+ ".run"=>"application/x-makeself",
215
+ ".mp2"=>"audio/mpeg",
216
+ ".flv"=>"video/x-flv",
217
+ ".wmlc"=>"application/vnd.wap.wmlc",
218
+ ".s3m"=>"audio/s3m",
219
+ ".mp3"=>"audio/mpeg",
220
+ ".pot,"=>"application/vnd.ms-powerpoint",
221
+ ".exe"=>"application/octet-stream",
222
+ ".list"=>"text/plain",
223
+ ".tex"=>"application/x-tex",
224
+ ".flx"=>"text/vnd.fmi.flexstor",
225
+ ".text"=>"text/plain",
226
+ ".x-png"=>"image/png",
227
+ ".viv"=>"video/vnd.vivo",
228
+ ".niff"=>"image/x-niff",
229
+ ".drw"=>"application/drafting",
230
+ ".lst"=>"text/plain",
231
+ ".kar"=>"music/x-karaoke",
232
+ ".cer"=>"application/x-x509-ca-cert",
233
+ ".m"=>"text/x-m",
234
+ ".com"=>"text/plain",
235
+ ".pl"=>"text/x-script.perl",
236
+ ".uue"=>"text/x-uuencode",
237
+ ".qcp"=>"audio/vnd.qcelp",
238
+ ".au"=>"audio/x-au",
239
+ ".plx"=>"application/x-pixclscript",
240
+ ".nws"=>"message/rfc822",
241
+ ".sgm"=>"text/x-sgml",
242
+ ".hdf"=>"application/x-hdf",
243
+ ".pm"=>"text/x-script.perl-module",
244
+ ".wp5"=>"application/wordperfect",
245
+ ".saveme"=>"application/octet-stream",
246
+ ".svf"=>"image/x-dwg",
247
+ ".wp6"=>"application/wordperfect",
248
+ ".vst"=>"application/x-visio",
249
+ ".svg"=>"image/svg+xml",
250
+ ".o"=>"application/octet-stream",
251
+ ".igs"=>"application/iges",
252
+ ".pvu"=>"paleovu/x-pv",
253
+ ".mhtml"=>"message/rfc822",
254
+ ".p"=>"text/x-pascal",
255
+ ".m1v"=>"video/mpeg",
256
+ ".lsx"=>"video/x-la-asf",
257
+ ".xaf"=>"x-world/x-vrml",
258
+ ".f77"=>"text/x-fortran",
259
+ ".xmz"=>"xgl/movie",
260
+ ".vsw"=>"application/x-visio",
261
+ ".book"=>"application/book",
262
+ ".aps"=>"application/mime",
263
+ ".cpio"=>"application/x-cpio",
264
+ ".s"=>"text/x-asm",
265
+ ".ps"=>"application/postscript",
266
+ ".wtk"=>"application/x-wintalk",
267
+ ".mjpg"=>"video/x-motion-jpeg",
268
+ ".t"=>"application/x-troff",
269
+ ".dump"=>"application/octet-stream",
270
+ ".jcm"=>"application/x-java-commerce",
271
+ ".env"=>"application/x-envoy",
272
+ ".cha"=>"application/x-chat",
273
+ ".w6w"=>"application/msword",
274
+ ".sdml"=>"text/plain",
275
+ ".tcl"=>"text/x-script.tcl",
276
+ ".rng"=>"application/vnd.nokia.ringing-tone",
277
+ ".ivr"=>"i-world/i-vrml",
278
+ ".vqe"=>"audio/x-twinvq-plugin",
279
+ ".uu"=>"text/x-uuencode",
280
+ ".pem"=>"application/x-x509-ca-cert",
281
+ ".nap"=>"image/naplps",
282
+ ".qd3d"=>"x-world/x-3dmf",
283
+ ".shar"=>"application/x-shar",
284
+ ".vqf"=>"audio/x-twinvq",
285
+ ".mov"=>"video/quicktime",
286
+ ".pyc"=>"applicaiton/x-bytecode.python",
287
+ ".py"=>"text/x-script.phyton",
288
+ ".z"=>"application/x-compressed",
289
+ ".wmls"=>"text/vnd.wap.wmlscript",
290
+ ".sea"=>"application/x-sea",
291
+ ".mcd"=>"application/x-mathcad",
292
+ ".unis"=>"text/uri-list",
293
+ ".svr"=>"x-world/x-svr",
294
+ ".elc"=>"application/x-elc",
295
+ ".ief"=>"image/ief",
296
+ ".aif"=>"audio/aiff",
297
+ ".xhtml"=>"application/xhtml+xml",
298
+ ".gzip"=>"application/x-gzip",
299
+ ".nc"=>"application/x-netcdf",
300
+ ".mcf"=>"text/mcf",
301
+ ".step"=>"application/step",
302
+ ".xpi"=>"application/x-xpinstall",
303
+ ".imap"=>"application/x-httpd-imap",
304
+ ".mime"=>"www/mime",
305
+ ".ivy"=>"application/x-livescreen",
306
+ ".dl"=>"video/dl",
307
+ ".for"=>"text/x-fortran",
308
+ ".crd"=>"application/x-mscardfile",
309
+ ".vql"=>"audio/x-twinvq-plugin",
310
+ ".mme"=>"application/base64",
311
+ ".jnlp"=>"application/x-java-jnlp-file",
312
+ ".xpm"=>"image/xpm",
313
+ ".trm"=>"application/x-msterminal",
314
+ ".ani"=>"application/x-navi-animation",
315
+ ".mrc"=>"application/marc",
316
+ ".asf"=>"video/x-ms-asf",
317
+ ".cco"=>"application/x-cocoa",
318
+ ".zoo"=>"application/octet-stream",
319
+ ".vrml"=>"x-world/x-vrml",
320
+ ".dp"=>"application/commonground",
321
+ ".html"=>"text/html",
322
+ ".qtif"=>"image/x-quicktime",
323
+ ".sh"=>"text/x-script.sh",
324
+ ".wmf"=>"windows/metafile",
325
+ ".pot"=>"application/vnd.ms-powerpoint",
326
+ ".aip"=>"text/x-audiosoft-intra",
327
+ ".wcm"=>"application/vnd.ms-works",
328
+ ".ksh"=>"text/x-script.ksh",
329
+ ".mcp"=>"application/netmc",
330
+ ".ip"=>"application/x-ip2",
331
+ ".sgml"=>"text/x-sgml",
332
+ ".pov"=>"model/x-pov",
333
+ ".rss"=>"text/xml",
334
+ ".mml"=>"text/mathml",
335
+ ".crl"=>"application/pkix-crl",
336
+ ".uni"=>"text/uri-list",
337
+ ".uil"=>"text/x-uil",
338
+ ".rgb"=>"image/x-rgb",
339
+ ".hlb"=>"text/x-script",
340
+ ".asm"=>"text/x-asm",
341
+ ".sl"=>"application/x-seelogo",
342
+ ".rnx"=>"application/vnd.rn-realplayer",
343
+ ".dif"=>"video/x-dv",
344
+ ".dv"=>"video/x-dv",
345
+ ".chat"=>"application/x-chat",
346
+ ".inf"=>"application/inf",
347
+ ".it"=>"audio/it",
348
+ ".pma"=>"application/x-perfmon",
349
+ ".xl"=>"application/excel",
350
+ ".wri"=>"application/mswrite",
351
+ ".wml"=>"text/vnd.wap.wml",
352
+ ".sol"=>"application/solids",
353
+ ".asp"=>"text/asp",
354
+ ".xm"=>"audio/xm",
355
+ ".jfif"=>"image/pjpeg",
356
+ ".nif"=>"image/x-niff",
357
+ ".fmf"=>"video/x-atomic3d-feature",
358
+ ".iv"=>"application/x-inventor",
359
+ ".pmc"=>"application/x-perfmon",
360
+ ".mht"=>"message/rfc822",
361
+ ".roff"=>"application/x-troff",
362
+ ".stl"=>"application/x-navistyle",
363
+ ".talk"=>"text/x-speech",
364
+ ".asr"=>"video/x-ms-asf",
365
+ ".set"=>"application/set",
366
+ ".wrl"=>"application/x-world",
367
+ ".jam"=>"audio/x-jam",
368
+ ".abc"=>"text/vnd.abc",
369
+ ".stm"=>"text/html",
370
+ ".jpe"=>"image/jpeg",
371
+ ".sv4crc"=>"application/x-sv4crc",
372
+ ".voc"=>"audio/x-voc",
373
+ ".prc"=>"application/x-pilot",
374
+ ".m2a"=>"audio/mpeg",
375
+ ".nsc"=>"application/x-conference",
376
+ ".help"=>"application/x-helpfile",
377
+ ".hgl"=>"application/vnd.hp-hpgl",
378
+ ".crt"=>"application/x-x509-ca-cert",
379
+ ".xif"=>"image/vnd.xiff",
380
+ ".pcl"=>"application/x-pcl",
381
+ ".log"=>"text/plain",
382
+ ".jpg"=>"image/jpeg",
383
+ ".ustar"=>"multipart/x-ustar",
384
+ ".cmx"=>"image/x-cmx",
385
+ ".pre"=>"application/x-freelance",
386
+ ".axs"=>"application/olescript",
387
+ ".bz2"=>"application/x-bzip2",
388
+ ".mpv2"=>"video/mpeg",
389
+ ".moov"=>"video/quicktime",
390
+ ".prf"=>"application/pics-rules",
391
+ ".dxf"=>"image/x-dwg",
392
+ ".stp"=>"application/step",
393
+ ".conf"=>"text/plain",
394
+ ".asx"=>"video/x-ms-asf",
395
+ ".la"=>"audio/x-nspaudio",
396
+ ".jar"=>"application/java-archive",
397
+ ".wmv"=>"video/x-ms-wmv",
398
+ ".unv"=>"application/i-deas",
399
+ ".boo"=>"application/book",
400
+ ".ima"=>"application/x-ima",
401
+ ".dir"=>"application/x-director",
402
+ ".frl"=>"application/freeloader",
403
+ ".wb1"=>"application/x-qpro",
404
+ ".hlp"=>"application/hlp",
405
+ ".tar"=>"application/x-tar",
406
+ ".scd"=>"application/x-msschedule",
407
+ ".pml"=>"application/x-perfmon",
408
+ ".evy"=>"application/x-envoy",
409
+ ".gif"=>"image/gif",
410
+ ".jav"=>"text/x-java-source",
411
+ ".pct"=>"image/x-pict",
412
+ ".mpa"=>"audio/mpeg",
413
+ ".xdr"=>"video/x-amt-demorun",
414
+ ".bm"=>"image/bmp",
415
+ ".mpc"=>"application/x-project",
416
+ ".qif"=>"image/x-quicktime",
417
+ ".gl"=>"video/x-gl",
418
+ ".img"=>"application/octet-stream",
419
+ ".gsd"=>"audio/x-gsm",
420
+ ".xsl"=>"application/xslt+xml",
421
+ ".pcx"=>"image/x-pcx",
422
+ ".pmr"=>"application/x-perfmon",
423
+ ".jps"=>"image/x-jps",
424
+ ".mpe"=>"video/mpeg",
425
+ ".src"=>"application/x-wais-source",
426
+ ".man"=>"application/x-troff-man",
427
+ ".wpd"=>"application/wordperfect",
428
+ ".vew"=>"application/groupwise",
429
+ ".dxr"=>"application/x-director",
430
+ ".mpg"=>"video/mpeg",
431
+ ".ico"=>"image/x-icon",
432
+ ".wq1"=>"application/x-lotus",
433
+ ".scm"=>"video/x-scm",
434
+ ".map"=>"application/x-navimap",
435
+ ".nix"=>"application/x-mix-transfer",
436
+ ".vos"=>"video/vosaic",
437
+ ".boz"=>"application/x-bzip2",
438
+ ".jut"=>"image/jutvision",
439
+ ".cat"=>"application/octet-stream",
440
+ ".lha"=>"application/x-lha",
441
+ ".p7a"=>"application/x-pkcs7-signature",
442
+ ".avi"=>"video/avi",
443
+ ".prt"=>"application/pro_eng",
444
+ ".pmw"=>"application/x-perfmon",
445
+ ".smi"=>"application/smil",
446
+ ".p7b"=>"application/x-pkcs7-certificates",
447
+ ".mar"=>"text/plain",
448
+ ".xsr"=>"video/x-amt-showrun",
449
+ ".tiff"=>"image/tiff",
450
+ ".hqx"=>"application/binhex",
451
+ ".p7c"=>"application/x-pkcs7-mime",
452
+ ".lma"=>"audio/x-nspaudio",
453
+ ".swf"=>"application/x-shockwave-flash",
454
+ ".war"=>"application/java-archive",
455
+ ".vcd"=>"application/x-cdlink",
456
+ ".cpp"=>"text/x-c",
457
+ ".gsm"=>"audio/x-gsm",
458
+ ".vox"=>"audio/voxware",
459
+ ".m2v"=>"video/mpeg",
460
+ ".ltx"=>"application/x-latex",
461
+ ".xla"=>"application/excel",
462
+ ".vcf"=>"text/x-vcard",
463
+ ".sct"=>"text/scriptlet",
464
+ ".ppa"=>"application/vnd.ms-powerpoint",
465
+ ".aifc"=>"audio/aiff",
466
+ ".hta"=>"application/hta",
467
+ ".bz"=>"application/x-bzip",
468
+ ".omcd"=>"application/x-omcdatamaker",
469
+ ".mpp"=>"application/vnd.ms-project",
470
+ ".pict"=>"image/pict",
471
+ ".gsp"=>"application/x-gsp",
472
+ ".xlb"=>"application/excel",
473
+ ".wav"=>"audio/x-wav",
474
+ ".eot"=>"application/octet-stream",
475
+ ".cpt"=>"application/x-cpt",
476
+ ".naplps"=>"image/naplps",
477
+ ".htc"=>"text/x-component",
478
+ ".xlc"=>"application/excel",
479
+ ".vmd"=>"application/vocaltec-media-desc",
480
+ ".tif"=>"image/tiff",
481
+ ".pkg"=>"application/x-newton-compatible-pkg",
482
+ ".jng"=>"image/x-jng",
483
+ ".qt"=>"video/quicktime",
484
+ ".tcsh"=>"text/x-script.tcsh",
485
+ ".aiff"=>"audio/aiff",
486
+ ".xld"=>"application/excel",
487
+ ".pub"=>"application/x-mspublisher",
488
+ ".pwz"=>"application/vnd.ms-powerpoint",
489
+ ".gss"=>"application/x-gss",
490
+ ".avs"=>"video/avs-video",
491
+ ".gz"=>"application/x-compressed",
492
+ ".wks"=>"application/vnd.ms-works",
493
+ ".uls"=>"text/iuls",
494
+ ".dll"=>"application/octet-stream",
495
+ ".vmf"=>"application/vocaltec-media-file",
496
+ ".mdb"=>"application/x-msaccess",
497
+ ".nvd"=>"application/x-navidoc",
498
+ ".mpt"=>"application/x-project",
499
+ ".p7m"=>"application/x-pkcs7-mime",
500
+ ".xbm"=>"image/xbm",
501
+ ".cdf"=>"application/cdf",
502
+ ".wps"=>"application/vnd.ms-works",
503
+ ".rtf"=>"text/richtext",
504
+ ".mpv"=>"application/x-project",
505
+ ".m13"=>"application/x-msmediaview",
506
+ ".dvi"=>"application/x-dvi",
507
+ ".shtml"=>"text/x-server-parsed-html",
508
+ ".vivo"=>"video/vnd.vivo",
509
+ ".setreg"=>"application/set-registration-initiation",
510
+ ".etx"=>"text/x-setext",
511
+ ".bmp"=>"image/bmp",
512
+ ".m14"=>"application/x-msmediaview",
513
+ ".wdb"=>"application/vnd.ms-works",
514
+ ".mpx"=>"application/x-project",
515
+ ".midi"=>"audio/x-midi",
516
+ ".pas"=>"text/pascal",
517
+ ".xlk"=>"application/excel",
518
+ ".w60"=>"application/wordperfect6.0",
519
+ ".tsi"=>"audio/tsp-audio",
520
+ ".mid"=>"audio/x-midi",
521
+ ".p7r"=>"application/x-pkcs7-certreqresp",
522
+ ".xll"=>"application/excel",
523
+ ".w61"=>"application/wordperfect6.1",
524
+ ".ppm"=>"image/x-portable-pixmap",
525
+ ".p7s"=>"application/x-pkcs7-signature",
526
+ ".htm"=>"text/html",
527
+ ".pko"=>"application/ynd.ms-pkipko",
528
+ ".xlm"=>"application/excel",
529
+ ".vcs"=>"text/x-vcalendar",
530
+ ".omc"=>"application/x-omc",
531
+ ".mif"=>"application/x-mif"
532
+ }
533
+
534
+
22
535
  end
536
+