Class: Etna::ParseBody
- Inherits:
-
Object
- Object
- Etna::ParseBody
- Defined in:
- lib/etna/parse_body.rb
Instance Method Summary collapse
- #call(env) ⇒ Object
-
#initialize(app) ⇒ ParseBody
constructor
A new instance of ParseBody.
Constructor Details
#initialize(app) ⇒ ParseBody
Returns a new instance of ParseBody.
3 4 5 |
# File 'lib/etna/parse_body.rb', line 3 def initialize(app) @app = app end |
Instance Method Details
#call(env) ⇒ Object
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
# File 'lib/etna/parse_body.rb', line 7 def call(env) params = env['rack.request.params'] || {} case env['CONTENT_TYPE'] when %r{application/json}i body = env['rack.input'].read if body =~ %r/^\s*\{/ params.update( JSON.parse(body) ) end when %r{application/x-www-form-urlencoded}i params.update( Rack::Utils.parse_nested_query( env['rack.input'].read ) ) when %r{multipart/form-data}i params.update( Rack::Multipart.parse_multipart(env) || {} ) end # Always parse the params that are url-encoded. params.update( Rack::Utils.parse_nested_query( env['QUERY_STRING'], '&' ) ) env.update( 'rack.request.params' => params ) @app.call(env) end |