Class: Flapjack::Gateways::JSONAPI::Middleware::JsonParamsParser

Inherits:
Struct
  • Object
show all
Defined in:
lib/flapjack/gateways/jsonapi/middleware/json_params_parser.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#appObject

Returns the value of attribute app

Returns:

  • (Object)

    the current value of app



9
10
11
# File 'lib/flapjack/gateways/jsonapi/middleware/json_params_parser.rb', line 9

def app
  @app
end

Instance Method Details

#call(env) ⇒ Object



10
11
12
13
14
15
16
17
18
19
20
21
22
# 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) ⇒ Boolean

Returns:

  • (Boolean)


24
25
26
# 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) ⇒ Object



28
29
30
31
# 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) ⇒ Boolean

Returns:

  • (Boolean)


33
34
35
# 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