stop using @env in the GET / POST methods

I want to implement this with something besides `@env` in the future, so
lets stop directly referencing it.
This commit is contained in:
Aaron Patterson 2015-08-24 14:57:05 -07:00
parent ec9c237acc
commit c4c5918b68
2 changed files with 11 additions and 4 deletions

@ -323,7 +323,9 @@ def session_options=(options)
# Override Rack's GET method to support indifferent access
def GET
@env["action_dispatch.request.query_parameters"] ||= normalize_encode_params(super || {})
get_header("action_dispatch.request.query_parameters") do |k|
set_header k, normalize_encode_params(super || {})
end
rescue Rack::Utils::ParameterTypeError, Rack::Utils::InvalidParameterError => e
raise ActionController::BadRequest.new(:query, e)
end
@ -331,7 +333,9 @@ def GET
# Override Rack's POST method to support indifferent access
def POST
@env["action_dispatch.request.request_parameters"] ||= normalize_encode_params(super || {})
get_header("action_dispatch.request.request_parameters") do |k|
self.request_parameters = normalize_encode_params(super || {})
end
rescue Rack::Utils::ParameterTypeError, Rack::Utils::InvalidParameterError => e
raise ActionController::BadRequest.new(:request, e)
end
@ -352,6 +356,7 @@ def local?
end
def request_parameters=(params)
raise if params.nil?
set_header("action_dispatch.request.request_parameters".freeze, params)
end

@ -37,7 +37,9 @@ def initialize(app, parsers = {})
def call(env)
request = Request.new(env)
request.request_parameters = parse_formatted_parameters(request, @parsers)
parse_formatted_parameters(request, @parsers) do |params|
request.request_parameters = params
end
@app.call(env)
end
@ -48,7 +50,7 @@ def parse_formatted_parameters(request, parsers)
strategy = parsers.fetch(request.content_mime_type) { return nil }
strategy.call(request.raw_post)
yield strategy.call(request.raw_post)
rescue => e # JSON or Ruby code block errors
logger(request).debug "Error occurred while parsing request parameters.\nContents:\n\n#{request.raw_post}"