Class: JsonKeyTransformerMiddleware::IncomingJsonFormatter

Inherits:
Middleware
  • Object
show all
Defined in:
lib/json_key_transformer_middleware/incoming_json_formatter.rb

Instance Method Summary collapse

Methods inherited from Middleware

#camel_to_underscore, #deep_transform_hash_keys, #underscore_to_camel

Constructor Details

#initialize(app) ⇒ IncomingJsonFormatter

Returns a new instance of IncomingJsonFormatter.



7
8
9
# File 'lib/json_key_transformer_middleware/incoming_json_formatter.rb', line 7

def initialize(app)
  @app = app
end

Instance Method Details

#call(env) ⇒ Object



11
12
13
14
15
16
17
18
19
20
21
22
# File 'lib/json_key_transformer_middleware/incoming_json_formatter.rb', line 11

def call(env)
  result =
    Oj.dump(
      deep_transform_hash_keys(
        Oj.load(env['rack.input'].read), :camel_to_underscore))

  env['rack.input'] = StringIO.new(result)
  # Rails uses this elsewhere to parse 'rack.input', it must be updated to avoid truncation
  env['CONTENT_LENGTH'] = result.length.to_s

  @app.call(env)
end