class Flapjack::Gateways::JSONAPI::Middleware::JsonParamsParser

Public Instance Methods

call(env) click to toggle source
# File lib/flapjack/gateways/jsonapi/middleware/json_params_parser.rb, line 10
def call(env)
  t = type(env)
  if ['POST', 'PATCH', 'DELETE'].include?(env["REQUEST_METHOD"]) &&
    env['rack.input'] && !input_parsed?(env) && type_match?(t)

    env['rack.request.form_input'] = env['rack.input']
    json_data = env['rack.input'].read
    env['rack.input'].rewind
    data = json_data.empty? ? {} : Flapjack.load_json(json_data)
    env['rack.request.form_hash'] = data
  end
  app.call(env)
end
input_parsed?(env) click to toggle source
# File lib/flapjack/gateways/jsonapi/middleware/json_params_parser.rb, line 24
def input_parsed? env
  env['rack.request.form_input'].eql?(env['rack.input'])
end
type(env) click to toggle source
# File lib/flapjack/gateways/jsonapi/middleware/json_params_parser.rb, line 28
def type(env)
  return if env['CONTENT_TYPE'].nil?
  env['CONTENT_TYPE'].split(/\s*[;,]\s*/, 2).first
end
type_match?(t) click to toggle source
# File lib/flapjack/gateways/jsonapi/middleware/json_params_parser.rb, line 33
def type_match?(t)
  Flapjack::Gateways::JSONAPI::JSONAPI_MEDIA_TYPE.eql?(t)
end