Sha256: 6690261850e7bc48ae8215aecaf8c8096b98111466dbb4eea78f71214fa70b0d

Contents?: true

Size: 922 Bytes

Versions: 5

Compression:

Stored size: 922 Bytes

Contents

#!/usr/bin/env ruby

require 'rack'

module Flapjack
  module Gateways
    class JSONAPI < Sinatra::Base
      module Rack
        class JsonParamsParser < Struct.new(:app)
          def call(env)
            if env['rack.input'] and not input_parsed?(env) and type_match?(env)
              env['rack.request.form_input'] = env['rack.input']
              data = env['rack.input'].read
              env['rack.input'].rewind
              env['rack.request.form_hash'] = data.empty? ? {} : Oj.load(data)
            end
            app.call(env)
          end

          def input_parsed? env
            env['rack.request.form_input'].eql? env['rack.input']
          end

          def type_match? env
            type = env['CONTENT_TYPE'] and
              Flapjack::Gateways::JSONAPI::JSON_REQUEST_MIME_TYPES.include?(type.split(/\s*[;,]\s*/, 2).first.downcase)
          end
        end
      end
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
flapjack-0.8.4 lib/flapjack/gateways/jsonapi/rack/json_params_parser.rb
flapjack-0.8.3 lib/flapjack/gateways/jsonapi/rack/json_params_parser.rb
flapjack-0.8.2 lib/flapjack/gateways/jsonapi/rack/json_params_parser.rb
flapjack-0.8.1 lib/flapjack/gateways/jsonapi/rack/json_params_parser.rb
flapjack-0.8.0 lib/flapjack/gateways/jsonapi/rack/json_params_parser.rb