class JunglePath::Rack::JsonBodyParser
A Rack
middleware for parsing POST/PUT body data when Content-Type is not one of the standard supported types, like application/json
.
Constants
- APPLICATION_JSON
Supported Content-Types
- CONTENT_TYPE
Constants
- FORM_HASH
- FORM_INPUT
- POST_BODY
Public Class Methods
new(app, symbolize_names=false)
click to toggle source
# File lib/jungle_path/rack/json_body_parser.rb, line 25 def initialize(app, symbolize_names=false) @app = app @symbolize_names = symbolize_names end
Public Instance Methods
call(env)
click to toggle source
# File lib/jungle_path/rack/json_body_parser.rb, line 30 def call(env) if ::Rack::Request.new(env).media_type == APPLICATION_JSON && (body = env[POST_BODY].read).length != 0 puts "rack body: #{body}." env[POST_BODY].rewind # somebody might try to read this stream #env.update(FORM_HASH => JSON.parse(body, :symbolize_names=>@symbolize_names), FORM_INPUT => env[POST_BODY]) env.update(FORM_HASH => JunglePath::Json.parse(body, :symbolize_names=>@symbolize_names), FORM_INPUT => env[POST_BODY]) end @app.call(env) end