waves-edge 2009.03.10.13.14
Sign up to get free protection for your applications and to get access to all the features.
- data/bin/waves +30 -0
- data/doc/HISTORY +1 -0
- data/doc/LICENSE +22 -0
- data/doc/README +1 -0
- data/doc/VERSION +1 -0
- data/lib/caches/file.rb +48 -0
- data/lib/caches/memcached.rb +40 -0
- data/lib/caches/simple.rb +25 -0
- data/lib/caches/synchronized.rb +25 -0
- data/lib/commands/console.rb +35 -0
- data/lib/commands/generate.rb +52 -0
- data/lib/commands/help.rb +5 -0
- data/lib/commands/server.rb +68 -0
- data/lib/dispatchers/base.rb +68 -0
- data/lib/dispatchers/default.rb +25 -0
- data/lib/ext/float.rb +13 -0
- data/lib/ext/hash.rb +31 -0
- data/lib/ext/integer.rb +27 -0
- data/lib/ext/kernel.rb +20 -0
- data/lib/ext/module.rb +20 -0
- data/lib/ext/object.rb +33 -0
- data/lib/ext/string.rb +20 -0
- data/lib/ext/symbol.rb +11 -0
- data/lib/ext/tempfile.rb +5 -0
- data/lib/foundations/classic.rb +59 -0
- data/lib/foundations/compact.rb +52 -0
- data/lib/helpers/basic.rb +11 -0
- data/lib/helpers/doc_type.rb +34 -0
- data/lib/helpers/extended.rb +21 -0
- data/lib/helpers/form.rb +42 -0
- data/lib/helpers/formatting.rb +30 -0
- data/lib/helpers/layouts.rb +37 -0
- data/lib/helpers/model.rb +37 -0
- data/lib/helpers/view.rb +22 -0
- data/lib/layers/inflect/english.rb +35 -0
- data/lib/layers/mvc.rb +41 -0
- data/lib/layers/mvc/controllers.rb +41 -0
- data/lib/layers/mvc/extensions.rb +52 -0
- data/lib/layers/orm/migration.rb +79 -0
- data/lib/layers/orm/providers/active_record.rb +84 -0
- data/lib/layers/orm/providers/active_record/migrations/empty.rb.erb +9 -0
- data/lib/layers/orm/providers/active_record/tasks/generate.rb +28 -0
- data/lib/layers/orm/providers/active_record/tasks/schema.rb +22 -0
- data/lib/layers/orm/providers/data_mapper.rb +37 -0
- data/lib/layers/orm/providers/filebase.rb +25 -0
- data/lib/layers/orm/providers/sequel.rb +87 -0
- data/lib/layers/orm/providers/sequel/migrations/empty.rb.erb +9 -0
- data/lib/layers/orm/providers/sequel/tasks/generate.rb +30 -0
- data/lib/layers/orm/providers/sequel/tasks/schema.rb +16 -0
- data/lib/layers/renderers/erubis.rb +52 -0
- data/lib/layers/renderers/haml.rb +67 -0
- data/lib/layers/renderers/markaby.rb +41 -0
- data/lib/matchers/accept.rb +21 -0
- data/lib/matchers/base.rb +30 -0
- data/lib/matchers/content_type.rb +17 -0
- data/lib/matchers/path.rb +67 -0
- data/lib/matchers/query.rb +21 -0
- data/lib/matchers/request.rb +27 -0
- data/lib/matchers/resource.rb +19 -0
- data/lib/matchers/traits.rb +19 -0
- data/lib/matchers/uri.rb +20 -0
- data/lib/renderers/mixin.rb +13 -0
- data/lib/resources/mixin.rb +136 -0
- data/lib/resources/paths.rb +132 -0
- data/lib/runtime/configuration.rb +100 -0
- data/lib/runtime/console.rb +23 -0
- data/lib/runtime/logger.rb +35 -0
- data/lib/runtime/mime_types.rb +536 -0
- data/lib/runtime/mocks.rb +14 -0
- data/lib/runtime/monitor.rb +32 -0
- data/lib/runtime/request.rb +152 -0
- data/lib/runtime/response.rb +43 -0
- data/lib/runtime/response_mixin.rb +54 -0
- data/lib/runtime/runtime.rb +69 -0
- data/lib/runtime/server.rb +20 -0
- data/lib/runtime/session.rb +27 -0
- data/lib/runtime/worker.rb +86 -0
- data/lib/servers/base.rb +42 -0
- data/lib/servers/mongrel.rb +13 -0
- data/lib/servers/webrick.rb +13 -0
- data/lib/tasks/gem.rb +32 -0
- data/lib/tasks/generate.rb +85 -0
- data/lib/views/errors.rb +49 -0
- data/lib/views/mixin.rb +64 -0
- data/lib/waves.rb +63 -0
- data/samples/blog/Rakefile +25 -0
- data/samples/blog/configurations/default.rb +11 -0
- data/samples/blog/configurations/development.rb +29 -0
- data/samples/blog/configurations/production.rb +26 -0
- data/samples/blog/models/comment.rb +23 -0
- data/samples/blog/models/entry.rb +31 -0
- data/samples/blog/public/css/site.css +13 -0
- data/samples/blog/public/javascript/jquery-1.2.6.min.js +32 -0
- data/samples/blog/public/javascript/site.js +13 -0
- data/samples/blog/resources/entry.rb +39 -0
- data/samples/blog/resources/map.rb +9 -0
- data/samples/blog/schema/migrations/001_initial_schema.rb +17 -0
- data/samples/blog/schema/migrations/002_add_comments.rb +18 -0
- data/samples/blog/schema/migrations/templates/empty.rb.erb +9 -0
- data/samples/blog/startup.rb +8 -0
- data/samples/blog/templates/comment/add.mab +12 -0
- data/samples/blog/templates/comment/list.mab +6 -0
- data/samples/blog/templates/entry/edit.mab +14 -0
- data/samples/blog/templates/entry/list.mab +16 -0
- data/samples/blog/templates/entry/show.mab +18 -0
- data/samples/blog/templates/entry/summary.mab +9 -0
- data/samples/blog/templates/errors/not_found_404.mab +7 -0
- data/samples/blog/templates/errors/server_error_500.mab +2 -0
- data/samples/blog/templates/layouts/default.mab +19 -0
- data/samples/blog/templates/waves/status.mab +85 -0
- data/templates/classic/Rakefile +90 -0
- data/templates/classic/configurations/default.rb.erb +9 -0
- data/templates/classic/configurations/development.rb.erb +26 -0
- data/templates/classic/configurations/production.rb.erb +29 -0
- data/templates/classic/controllers/.gitignore +0 -0
- data/templates/classic/helpers/.gitignore +0 -0
- data/templates/classic/lib/tasks/.gitignore +0 -0
- data/templates/classic/models/.gitignore +0 -0
- data/templates/classic/public/css/.gitignore +0 -0
- data/templates/classic/public/flash/.gitignore +0 -0
- data/templates/classic/public/images/.gitignore +0 -0
- data/templates/classic/public/javascript/.gitignore +0 -0
- data/templates/classic/resources/.gitignore +0 -0
- data/templates/classic/resources/map.rb.erb +8 -0
- data/templates/classic/schema/migrations/.gitignore +0 -0
- data/templates/classic/startup.rb.erb +11 -0
- data/templates/classic/templates/errors/not_found_404.mab +7 -0
- data/templates/classic/templates/errors/server_error_500.mab +7 -0
- data/templates/classic/templates/layouts/default.mab +14 -0
- data/templates/classic/tmp/sessions/.gitignore +0 -0
- data/templates/classic/views/.gitignore +0 -0
- data/templates/compact/startup.rb.erb +11 -0
- data/test/ext/object.rb +55 -0
- data/test/ext/shortcuts.rb +73 -0
- data/test/helpers.rb +17 -0
- data/test/match/accept.rb +34 -0
- data/test/match/methods.rb +22 -0
- data/test/match/params.rb +33 -0
- data/test/match/path.rb +106 -0
- data/test/match/query.rb +40 -0
- data/test/process/request.rb +75 -0
- data/test/process/resource.rb +53 -0
- data/test/resources/path.rb +166 -0
- data/test/runtime/configurations.rb +19 -0
- data/test/runtime/request.rb +63 -0
- data/test/runtime/response.rb +55 -0
- data/test/views/views.rb +34 -0
- metadata +394 -0
@@ -0,0 +1,100 @@
|
|
1
|
+
module Waves
|
2
|
+
|
3
|
+
module Configurations
|
4
|
+
|
5
|
+
class Base
|
6
|
+
# Set the given attribute with the given value. Typically, you wouldn't
|
7
|
+
# use this directly.
|
8
|
+
def self.[]=( name, val )
|
9
|
+
meta_def("_#{name}") { val }
|
10
|
+
end
|
11
|
+
|
12
|
+
# Get the value of the given attribute. Typically, you wouldn't
|
13
|
+
# use this directly.
|
14
|
+
def self.[]( name ) ; send "_#{name}" ; end
|
15
|
+
|
16
|
+
# Define a new attribute. After calling this, you can get and set the value
|
17
|
+
# using the attribute name as the method
|
18
|
+
def self.attribute( name )
|
19
|
+
meta_def(name) do |*args|
|
20
|
+
raise ArgumentError.new('Too many arguments.') if args.length > 1
|
21
|
+
args.length == 1 ? self[ name ] = args.first : self[ name ]
|
22
|
+
end
|
23
|
+
self[ name ] = nil
|
24
|
+
end
|
25
|
+
|
26
|
+
def self.attributes( *names )
|
27
|
+
names.each { |name| attribute( name ) }
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
31
|
+
|
32
|
+
# The Default configuration defines sensible defaults for attributes required by Waves.
|
33
|
+
class Default < Base
|
34
|
+
|
35
|
+
# define where a server should listen
|
36
|
+
# can be overridden by -p and -h options
|
37
|
+
attributes( :host, :port, :ports )
|
38
|
+
|
39
|
+
# which server to use, ex: Waves::Servers::Mongrel
|
40
|
+
attribute( :server )
|
41
|
+
|
42
|
+
# where will the logger write to? can be a IO object or a pathname
|
43
|
+
# also can set the level here to :fatal, :debug, :warn, :info
|
44
|
+
attribute( :log )
|
45
|
+
|
46
|
+
# which modules are going to be reloaded on each request?
|
47
|
+
attribute( :reloadable )
|
48
|
+
|
49
|
+
# which resource to use as the "main" resource for this server
|
50
|
+
attribute( :resource )
|
51
|
+
|
52
|
+
# parameters for the database connection, varies by ORM
|
53
|
+
attribute( :database )
|
54
|
+
|
55
|
+
# set the debug mode flag; typically done in dev / test configurations
|
56
|
+
attribute( :debug )
|
57
|
+
|
58
|
+
# what object to use as the main Waves cache
|
59
|
+
attribute( :cache )
|
60
|
+
|
61
|
+
# do you want to run a console thread (ex: LiveConsole)
|
62
|
+
attribute( :console )
|
63
|
+
|
64
|
+
# are there any gems we need to check for on startup?
|
65
|
+
attributes( :dependencies )
|
66
|
+
|
67
|
+
# Provides access to the Waves::MimeTypes class via the configuration. You
|
68
|
+
# can override #mime_types to return your own MIME types repository class.
|
69
|
+
def self.mime_types
|
70
|
+
Waves::MimeTypes
|
71
|
+
end
|
72
|
+
|
73
|
+
# Defines the application for use with Rack. Treat this method like an
|
74
|
+
# instance of Rack::Builder
|
75
|
+
def self.application( &block )
|
76
|
+
if block_given?
|
77
|
+
self['application'] = Rack::Builder.new( &block )
|
78
|
+
else
|
79
|
+
self['application']
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
# default options
|
84
|
+
debug true
|
85
|
+
log :level => :info, :output => $stderr
|
86
|
+
reloadable []
|
87
|
+
dependencies []
|
88
|
+
server Waves::Servers::WEBrick
|
89
|
+
application {
|
90
|
+
use ::Rack::ShowExceptions
|
91
|
+
use Rack::Session::Cookie, :key => 'rack.session',
|
92
|
+
# :domain => 'foo.com',
|
93
|
+
:path => '/',
|
94
|
+
:expire_after => 2592000,
|
95
|
+
:secret => 'Change it'
|
96
|
+
run ::Waves::Dispatchers::Default.new
|
97
|
+
}
|
98
|
+
end
|
99
|
+
end
|
100
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require 'runtime/mocks'
|
2
|
+
module Waves
|
3
|
+
|
4
|
+
class Console < Runtime
|
5
|
+
|
6
|
+
class << self
|
7
|
+
|
8
|
+
attr_reader :console
|
9
|
+
|
10
|
+
def load( options={} )
|
11
|
+
@console ||= Waves::Console.new( options )
|
12
|
+
Kernel.load( options[:startup] || 'startup.rb' )
|
13
|
+
Object.instance_eval { include Waves::Mocks }
|
14
|
+
end
|
15
|
+
|
16
|
+
# allow Waves::Console to act as The Console Instance
|
17
|
+
def method_missing(*args); @console.send(*args); end
|
18
|
+
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
require 'logger'
|
2
|
+
module Waves
|
3
|
+
|
4
|
+
module Logger
|
5
|
+
|
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
|
+
cache_method_missing name, "@log.#{name} *args, &block if @log", *args, &block
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
33
|
+
|
34
|
+
end
|
35
|
+
|
@@ -0,0 +1,536 @@
|
|
1
|
+
module Waves
|
2
|
+
|
3
|
+
# Waves::MimeTypes defines an interface for adding MIME types used in mapping requests
|
4
|
+
# to content types. Originally taken from Mongrel.
|
5
|
+
|
6
|
+
module MimeTypes
|
7
|
+
|
8
|
+
def self.[]( path )
|
9
|
+
mapping[ File.extname( path ) ]
|
10
|
+
end
|
11
|
+
|
12
|
+
# TODO: This does not seem to be working.
|
13
|
+
def self.<<( mapping )
|
14
|
+
mapping.merge!( mapping )
|
15
|
+
end
|
16
|
+
|
17
|
+
def self.mapping
|
18
|
+
@mapping ||= Waves::MIME_TYPES
|
19
|
+
end
|
20
|
+
|
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
|
+
|
535
|
+
end
|
536
|
+
|