Sha256: 195edf3b67595022009cf39ffeeedf9e297499e2bd8c90ff8de3c86651e19754

Contents?: true

Size: 674 Bytes

Versions: 35

Compression:

Stored size: 674 Bytes

Contents

#!/usr/bin/env ruby

require 'rack'

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
        type.split(/\s*[;,]\s*/, 2).first.downcase == 'application/json'
    end
  end
end

Version data entries

35 entries across 35 versions & 1 rubygems

Version Path
flapjack-0.9.6 lib/flapjack/gateways/api/rack/json_params_parser.rb
flapjack-0.9.5 lib/flapjack/gateways/api/rack/json_params_parser.rb
flapjack-0.9.4 lib/flapjack/gateways/api/rack/json_params_parser.rb
flapjack-0.9.3 lib/flapjack/gateways/api/rack/json_params_parser.rb
flapjack-0.9.2 lib/flapjack/gateways/api/rack/json_params_parser.rb
flapjack-0.9.1 lib/flapjack/gateways/api/rack/json_params_parser.rb
flapjack-0.9.0 lib/flapjack/gateways/api/rack/json_params_parser.rb
flapjack-0.8.12 lib/flapjack/gateways/api/rack/json_params_parser.rb
flapjack-0.8.11 lib/flapjack/gateways/api/rack/json_params_parser.rb
flapjack-0.8.10 lib/flapjack/gateways/api/rack/json_params_parser.rb
flapjack-0.8.9 lib/flapjack/gateways/api/rack/json_params_parser.rb
flapjack-0.8.8 lib/flapjack/gateways/api/rack/json_params_parser.rb
flapjack-0.8.7 lib/flapjack/gateways/api/rack/json_params_parser.rb
flapjack-0.8.6 lib/flapjack/gateways/api/rack/json_params_parser.rb
flapjack-0.8.5 lib/flapjack/gateways/api/rack/json_params_parser.rb
flapjack-0.8.4 lib/flapjack/gateways/api/rack/json_params_parser.rb
flapjack-0.8.3 lib/flapjack/gateways/api/rack/json_params_parser.rb
flapjack-0.8.2 lib/flapjack/gateways/api/rack/json_params_parser.rb
flapjack-0.8.1 lib/flapjack/gateways/api/rack/json_params_parser.rb
flapjack-0.8.0 lib/flapjack/gateways/api/rack/json_params_parser.rb