diff options
Diffstat (limited to 'lib/metropolis')
-rw-r--r-- | lib/metropolis/common.rb | 3 | ||||
-rw-r--r-- | lib/metropolis/suffix_mime.rb | 18 |
2 files changed, 21 insertions, 0 deletions
diff --git a/lib/metropolis/common.rb b/lib/metropolis/common.rb index d9cadba..a6688f3 100644 --- a/lib/metropolis/common.rb +++ b/lib/metropolis/common.rb @@ -33,6 +33,9 @@ module Metropolis::Common else raise ArgumentError, "unsupported encoding" end + if filters = opts[:use] + Array(filters).each { |filter| extend filter } + end end def r(code, body = nil) diff --git a/lib/metropolis/suffix_mime.rb b/lib/metropolis/suffix_mime.rb new file mode 100644 index 0000000..76a3f96 --- /dev/null +++ b/lib/metropolis/suffix_mime.rb @@ -0,0 +1,18 @@ +module Metropolis::SuffixMime + MIME_TYPES = Rack::Mime::MIME_TYPES + + def get(key, env) + set_mime(key, super) + end + + def head(key, env) + set_mime(key, super) + end + + def set_mime(key, response) + status, headers, _ = response + 200 == status && /(\.[^\.]+)\z/ =~ key and + type = MIME_TYPES[$1] and headers["Content-Type"] = type + response + end +end |