waves 0.8.2 → 0.9.0
Sign up to get free protection for your applications and to get access to all the features.
- data/bin/waves +4 -3
- data/doc/VERSION +1 -1
- data/lib/waves.rb +52 -40
- data/lib/{caches → waves/caches}/file.rb +3 -1
- data/lib/waves/caches/memcached.rb +56 -0
- data/lib/{caches → waves/caches}/simple.rb +6 -7
- data/lib/{caches → waves/caches}/synchronized.rb +15 -1
- data/lib/{commands → waves/commands}/console.rb +4 -4
- data/lib/{commands → waves/commands}/generate.rb +6 -5
- data/lib/{commands → waves/commands}/help.rb +0 -0
- data/lib/{commands → waves/commands}/server.rb +1 -1
- data/lib/{dispatchers → waves/dispatchers}/base.rb +17 -31
- data/lib/waves/dispatchers/default.rb +19 -0
- data/lib/{ext → waves/ext}/float.rb +0 -0
- data/lib/{ext → waves/ext}/hash.rb +0 -0
- data/lib/{ext → waves/ext}/integer.rb +16 -1
- data/lib/{ext → waves/ext}/kernel.rb +3 -7
- data/lib/{ext → waves/ext}/module.rb +3 -3
- data/lib/{ext → waves/ext}/object.rb +2 -0
- data/lib/waves/ext/string.rb +73 -0
- data/lib/{ext → waves/ext}/symbol.rb +0 -1
- data/lib/{ext → waves/ext}/tempfile.rb +0 -0
- data/lib/waves/ext/time.rb +5 -0
- data/lib/{foundations → waves/foundations}/classic.rb +9 -21
- data/lib/{foundations → waves/foundations}/compact.rb +15 -20
- data/lib/waves/foundations/rest.rb +311 -0
- data/lib/waves/helpers/basic.rb +13 -0
- data/lib/{helpers → waves/helpers}/doc_type.rb +3 -0
- data/lib/waves/helpers/form.rb +94 -0
- data/lib/waves/helpers/formatting.rb +14 -0
- data/lib/waves/layers/mvc.rb +65 -0
- data/lib/{layers → waves/layers}/mvc/controllers.rb +0 -0
- data/lib/{layers → waves/layers}/mvc/extensions.rb +23 -11
- data/lib/{layers → waves/layers}/orm/migration.rb +0 -0
- data/lib/{layers → waves/layers}/orm/providers/active_record.rb +2 -5
- data/lib/{layers → waves/layers}/orm/providers/active_record/migrations/empty.rb.erb +0 -0
- data/lib/{layers → waves/layers}/orm/providers/active_record/tasks/generate.rb +1 -1
- data/lib/{layers → waves/layers}/orm/providers/active_record/tasks/schema.rb +1 -1
- data/lib/{layers → waves/layers}/orm/providers/data_mapper.rb +0 -0
- data/lib/{layers → waves/layers}/orm/providers/filebase.rb +0 -0
- data/lib/{layers → waves/layers}/orm/providers/sequel.rb +28 -29
- data/lib/{layers → waves/layers}/orm/providers/sequel/migrations/empty.rb.erb +0 -0
- data/lib/{layers → waves/layers}/orm/providers/sequel/tasks/generate.rb +1 -1
- data/lib/{layers → waves/layers}/orm/providers/sequel/tasks/schema.rb +2 -0
- data/lib/waves/layers/rack/rack_cache.rb +32 -0
- data/lib/waves/layers/renderers/erubis.rb +52 -0
- data/lib/waves/layers/renderers/haml.rb +67 -0
- data/lib/waves/layers/renderers/markaby.rb +41 -0
- data/lib/waves/layers/text/inflect/english.rb +42 -0
- data/lib/waves/matchers/accept.rb +47 -0
- data/lib/waves/matchers/ext.rb +27 -0
- data/lib/waves/matchers/path.rb +72 -0
- data/lib/waves/matchers/query.rb +43 -0
- data/lib/waves/matchers/request.rb +86 -0
- data/lib/waves/matchers/requested.rb +31 -0
- data/lib/{matchers → waves/matchers}/resource.rb +8 -1
- data/lib/waves/matchers/traits.rb +30 -0
- data/lib/waves/matchers/uri.rb +69 -0
- data/lib/waves/media/mime_types.rb +542 -0
- data/lib/waves/renderers/mixin.rb +9 -0
- data/lib/waves/request/accept.rb +92 -0
- data/lib/{runtime → waves/request}/request.rb +77 -61
- data/lib/waves/resources/file_mixin.rb +11 -0
- data/lib/{resources → waves/resources}/mixin.rb +42 -44
- data/lib/waves/resources/paths.rb +132 -0
- data/lib/waves/response/client_errors.rb +10 -0
- data/lib/waves/response/packaged.rb +19 -0
- data/lib/waves/response/redirects.rb +35 -0
- data/lib/{runtime → waves/response}/response.rb +29 -11
- data/lib/{runtime → waves/response}/response_mixin.rb +30 -17
- data/lib/waves/runtime/applications.rb +18 -0
- data/lib/{runtime → waves/runtime}/configuration.rb +31 -25
- data/lib/waves/runtime/console.rb +24 -0
- data/lib/{runtime → waves/runtime}/logger.rb +3 -3
- data/lib/{runtime → waves/runtime}/mocks.rb +2 -2
- data/lib/waves/runtime/rackup.rb +37 -0
- data/lib/waves/runtime/runtime.rb +48 -0
- data/lib/waves/runtime/server.rb +33 -0
- data/lib/{servers → waves/servers}/base.rb +0 -0
- data/lib/{servers → waves/servers}/mongrel.rb +0 -0
- data/lib/{servers → waves/servers}/webrick.rb +0 -0
- data/lib/{tasks → waves/tasks}/gem.rb +0 -0
- data/lib/{tasks → waves/tasks}/generate.rb +0 -0
- data/lib/waves/views/cassy.rb +173 -0
- data/lib/{views → waves/views}/errors.rb +8 -7
- data/lib/waves/views/mixin.rb +23 -0
- data/lib/waves/views/templated.rb +40 -0
- data/samples/basic/basic_startup.rb +70 -0
- data/samples/basic/config.ru +9 -0
- data/samples/blog/configurations/development.rb +17 -16
- data/samples/blog/configurations/production.rb +0 -11
- data/samples/blog/resources/entry.rb +3 -3
- data/samples/blog/resources/map.rb +10 -3
- data/samples/blog/startup.rb +4 -3
- data/templates/classic/Rakefile +28 -29
- data/templates/classic/configurations/default.rb.erb +8 -3
- data/templates/classic/configurations/development.rb.erb +1 -20
- data/templates/classic/configurations/production.rb.erb +2 -16
- data/templates/classic/public/images/favicon.ico +0 -0
- data/templates/classic/resources/server.rb.erb +9 -0
- data/templates/classic/startup.rb.erb +3 -3
- data/templates/classic/views/css.rb.erb +14 -0
- data/templates/classic/views/default.rb.erb +17 -0
- data/templates/classic/views/errors.rb.erb +10 -0
- data/templates/classic/views/pages.rb.erb +14 -0
- data/templates/compact/startup.rb.erb +8 -3
- 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 +78 -0
- data/test/match/ext.rb +156 -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 +60 -0
- data/test/match/request.rb +91 -0
- data/test/match/requested.rb +149 -0
- data/test/match/uri.rb +136 -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 +85 -0
- data/test/views/views.rb +40 -0
- metadata +243 -157
- data/lib/caches/memcached.rb +0 -40
- data/lib/dispatchers/default.rb +0 -25
- data/lib/ext/string.rb +0 -20
- data/lib/helpers/basic.rb +0 -11
- data/lib/helpers/extended.rb +0 -21
- data/lib/helpers/form.rb +0 -42
- data/lib/helpers/formatting.rb +0 -30
- data/lib/helpers/layouts.rb +0 -37
- data/lib/helpers/model.rb +0 -37
- data/lib/helpers/view.rb +0 -22
- data/lib/layers/inflect/english.rb +0 -67
- data/lib/layers/mvc.rb +0 -54
- data/lib/layers/renderers/erubis.rb +0 -60
- data/lib/layers/renderers/haml.rb +0 -47
- data/lib/layers/renderers/markaby.rb +0 -29
- data/lib/matchers/accept.rb +0 -21
- data/lib/matchers/base.rb +0 -30
- data/lib/matchers/content_type.rb +0 -17
- data/lib/matchers/path.rb +0 -67
- data/lib/matchers/query.rb +0 -21
- data/lib/matchers/request.rb +0 -27
- data/lib/matchers/traits.rb +0 -19
- data/lib/matchers/uri.rb +0 -20
- data/lib/renderers/mixin.rb +0 -36
- data/lib/resources/paths.rb +0 -34
- data/lib/runtime/console.rb +0 -23
- data/lib/runtime/mime_types.rb +0 -536
- data/lib/runtime/monitor.rb +0 -32
- data/lib/runtime/runtime.rb +0 -67
- data/lib/runtime/server.rb +0 -20
- data/lib/runtime/session.rb +0 -27
- data/lib/runtime/worker.rb +0 -86
- data/lib/views/mixin.rb +0 -62
- data/samples/blog/blog.db +0 -0
- data/samples/blog/log/waves.production +0 -3
- data/templates/classic/resources/map.rb.erb +0 -8
- data/templates/classic/templates/errors/not_found_404.mab +0 -7
- data/templates/classic/templates/errors/server_error_500.mab +0 -7
- data/templates/classic/templates/layouts/default.mab +0 -14
- data/templates/classic/tmp/sessions/.gitignore +0 -0
@@ -1,47 +0,0 @@
|
|
1
|
-
require 'haml'
|
2
|
-
|
3
|
-
module Waves
|
4
|
-
|
5
|
-
module Renderers
|
6
|
-
|
7
|
-
module Haml
|
8
|
-
|
9
|
-
Extension = :haml
|
10
|
-
|
11
|
-
extend Waves::Renderers::Mixin
|
12
|
-
|
13
|
-
def self.render( path, assigns )
|
14
|
-
engine = ::Haml::Engine.new( template( path ) )
|
15
|
-
scope = Scope.new
|
16
|
-
helper = helper( path )
|
17
|
-
scope.meta_eval { include( helper ) }
|
18
|
-
scope.instance_eval do
|
19
|
-
assigns.each { |key,val| instance_variable_set("@#{key}",val) unless key == :request }
|
20
|
-
end
|
21
|
-
engine.render(scope, assigns)
|
22
|
-
end
|
23
|
-
|
24
|
-
class Scope
|
25
|
-
include Waves::Helpers::DocType
|
26
|
-
include Waves::Helpers::Layouts
|
27
|
-
include Waves::Helpers::Model
|
28
|
-
include Waves::Helpers::View
|
29
|
-
|
30
|
-
def <<(s)
|
31
|
-
eval("@haml_buffer", @binding).push_text s # add to rendered output
|
32
|
-
end
|
33
|
-
|
34
|
-
def capture(&block)
|
35
|
-
capture_haml(nil, &block)
|
36
|
-
end
|
37
|
-
|
38
|
-
end
|
39
|
-
|
40
|
-
end
|
41
|
-
|
42
|
-
end
|
43
|
-
|
44
|
-
end
|
45
|
-
|
46
|
-
|
47
|
-
|
@@ -1,29 +0,0 @@
|
|
1
|
-
module Waves
|
2
|
-
|
3
|
-
module Renderers
|
4
|
-
|
5
|
-
module Markaby
|
6
|
-
|
7
|
-
Extension = :mab
|
8
|
-
|
9
|
-
extend Waves::Renderers::Mixin
|
10
|
-
|
11
|
-
def self.included( app )
|
12
|
-
require 'markaby'
|
13
|
-
::Markaby::Builder.set( :indent, 2 )
|
14
|
-
super
|
15
|
-
end
|
16
|
-
|
17
|
-
def self.render( path, assigns )
|
18
|
-
builder = ::Markaby::Builder.new( assigns )
|
19
|
-
helper = helper( path )
|
20
|
-
builder.meta_eval { include( helper ) }
|
21
|
-
builder.instance_eval( template( path ) )
|
22
|
-
builder.to_s
|
23
|
-
end
|
24
|
-
|
25
|
-
end
|
26
|
-
|
27
|
-
end
|
28
|
-
|
29
|
-
end
|
data/lib/matchers/accept.rb
DELETED
@@ -1,21 +0,0 @@
|
|
1
|
-
module Waves
|
2
|
-
|
3
|
-
module Matchers
|
4
|
-
|
5
|
-
class Accept < Base
|
6
|
-
|
7
|
-
def initialize( options )
|
8
|
-
@constraints = {
|
9
|
-
:accept => options[ :accept ],
|
10
|
-
:lang => options[ :lang ],
|
11
|
-
:charset => options[ :charset ]
|
12
|
-
}
|
13
|
-
end
|
14
|
-
|
15
|
-
def call( request ) ; test( request ) ; end
|
16
|
-
|
17
|
-
end
|
18
|
-
|
19
|
-
end
|
20
|
-
|
21
|
-
end
|
data/lib/matchers/base.rb
DELETED
@@ -1,30 +0,0 @@
|
|
1
|
-
module Waves
|
2
|
-
|
3
|
-
module Matchers
|
4
|
-
|
5
|
-
class Base
|
6
|
-
|
7
|
-
attr_accessor :constraints
|
8
|
-
|
9
|
-
def []( *args ) ; call( *args ) ; end
|
10
|
-
|
11
|
-
# used to provide consisting matching logic across all matchers
|
12
|
-
def test( request )
|
13
|
-
constraints.all? do | key, val |
|
14
|
-
if val.nil? or val == true
|
15
|
-
true
|
16
|
-
else
|
17
|
-
if val.respond_to? :call
|
18
|
-
val.call( request )
|
19
|
-
else
|
20
|
-
val == request.send( key ) or val === request.send( key ) or request.send( key ) === val
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
end
|
27
|
-
|
28
|
-
end
|
29
|
-
|
30
|
-
end
|
@@ -1,17 +0,0 @@
|
|
1
|
-
module Waves
|
2
|
-
|
3
|
-
module Matchers
|
4
|
-
|
5
|
-
class ContentType < Base
|
6
|
-
|
7
|
-
def initialize( content_type ) ; @constraints = { :content_type => content_type } ; end
|
8
|
-
|
9
|
-
# we could maybe do something more sophisticated here, matching against content type patterns
|
10
|
-
# such */html or */xml, etc.; adapt from the matching done on accepts ... ?
|
11
|
-
def call( request ) ; test( request ) ; end
|
12
|
-
|
13
|
-
end
|
14
|
-
|
15
|
-
end
|
16
|
-
|
17
|
-
end
|
data/lib/matchers/path.rb
DELETED
@@ -1,67 +0,0 @@
|
|
1
|
-
module Waves
|
2
|
-
|
3
|
-
module Matchers
|
4
|
-
|
5
|
-
class Path < Base
|
6
|
-
|
7
|
-
# Takes an array of pattern elements ... coming soon, support for formatted strings!
|
8
|
-
def initialize( pattern ) ; @pattern = pattern ; end
|
9
|
-
|
10
|
-
def call( request )
|
11
|
-
return {} if @pattern == true or @pattern == false or @pattern.nil?
|
12
|
-
path = extract_path( request ).reverse
|
13
|
-
return {} if ( path.empty? and @pattern.empty? )
|
14
|
-
capture = {}
|
15
|
-
match = @pattern.all? do | want |
|
16
|
-
case want
|
17
|
-
when true # means 1..-1
|
18
|
-
path = [] unless path.empty?
|
19
|
-
when Range
|
20
|
-
if want.end == -1
|
21
|
-
path = [] if path.length >= want.begin
|
22
|
-
else
|
23
|
-
path = [] if want.include? path.length
|
24
|
-
end
|
25
|
-
when String then want == path.pop
|
26
|
-
when Symbol then capture[ want ] = path.pop
|
27
|
-
when Regexp then want === path.pop
|
28
|
-
when Hash
|
29
|
-
key, value = want.to_a.first
|
30
|
-
case value
|
31
|
-
when true
|
32
|
-
( capture[ key ], path = path.reverse, [] ) unless path.empty?
|
33
|
-
when Range
|
34
|
-
if value.end == -1
|
35
|
-
( capture[ key ], path = path.reverse, [] ) if path.length >= value.begin
|
36
|
-
else
|
37
|
-
( capture[ key ], path = path.reverse, [] ) if value.include? path.length
|
38
|
-
end
|
39
|
-
when String, Symbol
|
40
|
-
got = path.pop
|
41
|
-
capture[ key ] = got ? got : value.to_s
|
42
|
-
when Regexp then
|
43
|
-
got = path.pop
|
44
|
-
capture[ key ] = got if value === got
|
45
|
-
end
|
46
|
-
end
|
47
|
-
end
|
48
|
-
capture if match && path.empty?
|
49
|
-
end
|
50
|
-
|
51
|
-
private
|
52
|
-
|
53
|
-
# just a little helper method
|
54
|
-
def extract_path( request )
|
55
|
-
path = request.traits.waves.path
|
56
|
-
return path if path
|
57
|
-
path = request.path.split('/')
|
58
|
-
path.shift unless path.empty?
|
59
|
-
request.traits.waves.path = path
|
60
|
-
end
|
61
|
-
|
62
|
-
end
|
63
|
-
|
64
|
-
|
65
|
-
end
|
66
|
-
|
67
|
-
end
|
data/lib/matchers/query.rb
DELETED
@@ -1,21 +0,0 @@
|
|
1
|
-
module Waves
|
2
|
-
|
3
|
-
module Matchers
|
4
|
-
|
5
|
-
class Query < Base
|
6
|
-
|
7
|
-
def initialize( pattern ) ; @pattern = ( pattern or {} ) ; end
|
8
|
-
|
9
|
-
def call( request )
|
10
|
-
@pattern.all? do | key, val |
|
11
|
-
key = key.to_s
|
12
|
-
( ( val.respond_to?(:call) and val.call( request.query[ key ] ) ) or
|
13
|
-
( request.query[ key ] and ( ( val == true ) or ( val === request.query[ key ] ) ) ) )
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
17
|
-
end
|
18
|
-
|
19
|
-
end
|
20
|
-
|
21
|
-
end
|
data/lib/matchers/request.rb
DELETED
@@ -1,27 +0,0 @@
|
|
1
|
-
module Waves
|
2
|
-
|
3
|
-
module Matchers
|
4
|
-
|
5
|
-
class Request < Base
|
6
|
-
|
7
|
-
def initialize( options )
|
8
|
-
@uri = Matchers::URI.new( options )
|
9
|
-
@constraints = {
|
10
|
-
:content_type => Matchers::ContentType.new( options[ :content_type ] ),
|
11
|
-
:accept => Matchers::Accept.new( options ),
|
12
|
-
:query => Matchers::Query.new( options[:query] ),
|
13
|
-
:traits => Matchers::Traits.new( options[:traits] )
|
14
|
-
}
|
15
|
-
end
|
16
|
-
|
17
|
-
def call( request )
|
18
|
-
if test( request ) and captured = @uri[ request ]
|
19
|
-
request.traits.waves.captured = captured
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
23
|
-
end
|
24
|
-
|
25
|
-
end
|
26
|
-
|
27
|
-
end
|
data/lib/matchers/traits.rb
DELETED
@@ -1,19 +0,0 @@
|
|
1
|
-
module Waves
|
2
|
-
|
3
|
-
module Matchers
|
4
|
-
|
5
|
-
class Traits < Base
|
6
|
-
|
7
|
-
def initialize( pattern ) ; @pattern = ( pattern or {} ) ; end
|
8
|
-
|
9
|
-
def call( request )
|
10
|
-
@pattern.all? do | key, val |
|
11
|
-
( val.is_a? Proc and val.call( request.traits[ key ] ) ) or val === request.traits[ key ]
|
12
|
-
end
|
13
|
-
end
|
14
|
-
|
15
|
-
end
|
16
|
-
|
17
|
-
end
|
18
|
-
|
19
|
-
end
|
data/lib/matchers/uri.rb
DELETED
@@ -1,20 +0,0 @@
|
|
1
|
-
module Waves
|
2
|
-
|
3
|
-
module Matchers
|
4
|
-
|
5
|
-
class URI < Base
|
6
|
-
|
7
|
-
def initialize( options )
|
8
|
-
@path = Waves::Matchers::Path.new( options[ :path ] )
|
9
|
-
@constraints = { :server => options[ :server ], :scheme => options[ :scheme ] }
|
10
|
-
end
|
11
|
-
|
12
|
-
def call( request )
|
13
|
-
@path.call( request ) if test( request )
|
14
|
-
end
|
15
|
-
|
16
|
-
end
|
17
|
-
|
18
|
-
end
|
19
|
-
|
20
|
-
end
|
data/lib/renderers/mixin.rb
DELETED
@@ -1,36 +0,0 @@
|
|
1
|
-
module Waves
|
2
|
-
|
3
|
-
module Renderers # :nodoc:
|
4
|
-
|
5
|
-
# The renderers mixin provides a number of methods to simplify writing new renderers.
|
6
|
-
# Just include this in your Renderer class and write your render method.
|
7
|
-
module Mixin
|
8
|
-
|
9
|
-
# Adds the following methods to the mod class:
|
10
|
-
#
|
11
|
-
# - filename: generate a filename for the template based on a logical path.
|
12
|
-
# - template: read the template from the file corresponding to the given logical path.
|
13
|
-
# - helper: return a helper module that corresponds to the given logical path.
|
14
|
-
#
|
15
|
-
|
16
|
-
def included( app )
|
17
|
-
Waves::Views.renderers << self
|
18
|
-
end
|
19
|
-
|
20
|
-
def filename(path)
|
21
|
-
"#{path}.#{self::Extension}"
|
22
|
-
end
|
23
|
-
|
24
|
-
def template( path )
|
25
|
-
File.read( filename( path ) )
|
26
|
-
end
|
27
|
-
|
28
|
-
def helper( path )
|
29
|
-
Waves.main[ :helpers ][ File.basename( File.dirname( path ) ).camel_case ]
|
30
|
-
end
|
31
|
-
|
32
|
-
end
|
33
|
-
|
34
|
-
end
|
35
|
-
|
36
|
-
end
|
data/lib/resources/paths.rb
DELETED
@@ -1,34 +0,0 @@
|
|
1
|
-
module Waves
|
2
|
-
|
3
|
-
module Resources
|
4
|
-
|
5
|
-
class Paths
|
6
|
-
|
7
|
-
attr_accessor :request
|
8
|
-
|
9
|
-
include Waves::ResponseMixin
|
10
|
-
|
11
|
-
def initialize( request ) ; @request = request ; end
|
12
|
-
|
13
|
-
def generate( template, args )
|
14
|
-
return "/#{ args * '/' }" unless template.is_a?( Array ) and not template.empty?
|
15
|
-
path = []
|
16
|
-
( "/#{ path * '/' }" ) if template.all? do | want |
|
17
|
-
case want
|
18
|
-
when true then path += args
|
19
|
-
when String then path << want
|
20
|
-
when Symbol then path << args.shift
|
21
|
-
when Regexp then path << args.shift
|
22
|
-
when Hash
|
23
|
-
key, value = want.to_a.first
|
24
|
-
case value
|
25
|
-
when true then path += args
|
26
|
-
when String, Symbol, RegExp then path << args.unshift
|
27
|
-
end
|
28
|
-
end
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|
34
|
-
end
|
data/lib/runtime/console.rb
DELETED
@@ -1,23 +0,0 @@
|
|
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
|
data/lib/runtime/mime_types.rb
DELETED
@@ -1,536 +0,0 @@
|
|
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
|
-
|