Sha256: 5dc55d87115fb498db2d7fdd8457d6178ec4e969ce0341a7b7d3f48571564feb

Contents?: true

Size: 716 Bytes

Versions: 9

Compression:

Stored size: 716 Bytes

Contents

module Rack
  class API
    module Middleware
      class Format
        def initialize(app, default_format, formats)
          @app = app
          @default_format = default_format.to_s
          @formats = formats.collect {|f| f.to_s}
        end

        def call(env)
          request = Rack::Request.new(env)
          params = request.env["rack.routing_args"].merge(request.params)
          requested_format = params.fetch(:format, @default_format)

          if @formats.include?(requested_format)
            @app.call(env)
          else
            [406, {"Content-Type" => "text/plain"}, ["Invalid format. Accepts one of [#{@formats.join(", ")}]"]]
          end
        end
      end
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
rack-api-1.1.0 lib/rack/api/middleware/format.rb
rack-api-1.0.2 lib/rack/api/middleware/format.rb
rack-api-1.0.1 lib/rack/api/middleware/format.rb
rack-api-1.0.0 lib/rack/api/middleware/format.rb
rack-api-0.3.1 lib/rack/api/middleware/format.rb
rack-api-0.3.0 lib/rack/api/middleware/format.rb
rack-api-0.2.2 lib/rack/api/middleware/format.rb
rack-api-0.2.1 lib/rack/api/middleware/format.rb
rack-api-0.2.0 lib/rack/api/middleware/format.rb