Sha256: e05bd9a17a3be380c281e0ce877685ef67a22002a3740404031209e3f9a62c36
Contents?: true
Size: 1.38 KB
Versions: 2
Compression:
Stored size: 1.38 KB
Contents
module G5K module Rack # # A Rack middleware for automatically adding a <tt>format</tt> token at the end of the request path # when there is none. It can detect formats passed in the HTTP_ACCEPT header to populate this token. # # e.g.: # GET /some/resource HTTP/1.1 # Accept: application/json # -> # GET /some/resource.json HTTP/1.1 # Accept: application/json # # You can add custom types with this kind of function (taken from sinatra): # def mime(ext, type) # ext = ".#{ext}" unless ext.to_s[0] == ?. # Rack::Mime::MIME_TYPES[ext.to_s] = type # end # and then: # mime :json, 'application/json' # # Note: it does not take into account multiple media types in the Accept header. # The first media type takes precedence over all the others. # # MIT-License - Cyril Rohr # class AcceptFormat # Constants DEFAULT_EXTENSION = ".html" def initialize(app) @app = app end def call(env) req = Rack::Request.new(env) unless req.path_info =~ /(.*)\.(.+)/ accept = env['HTTP_ACCEPT'].scan(/[^;,\s]*\/[^;,\s]*/)[0] rescue "" extension = Rack::Mime::MIME_TYPES.invert[accept] || DEFAULT_EXTENSION req.path_info = req.path_info+"#{extension}" end @app.call(env) end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
cryx-g5k-0.1.0 | lib/g5k/rack/accept_format.rb |
cryx-g5k-0.2.0 | lib/g5k/rack/accept_format.rb |