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