Skip to content

Commit 9b7ecf0

Browse files
committed
refactor param parsing middleware to use request objects
this is another place that we should stop directly accessing the env hash and let the request object take care of that for us
1 parent 85969c7 commit 9b7ecf0

File tree

2 files changed

+17
-10
lines changed

2 files changed

+17
-10
lines changed

actionpack/lib/action_dispatch/http/request.rb

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -339,6 +339,14 @@ def local?
339339
LOCALHOST =~ remote_addr && LOCALHOST =~ remote_ip
340340
end
341341

342+
def request_parameters=(params)
343+
env["action_dispatch.request.request_parameters".freeze] = params
344+
end
345+
346+
def logger
347+
env["action_dispatch.logger".freeze]
348+
end
349+
342350
private
343351
def check_method(name)
344352
HTTP_METHOD_LOOKUP[name] || raise(ActionController::UnknownHttpMethod, "#{name}, accepted HTTP methods are #{HTTP_METHODS[0...-1].join(', ')}, and #{HTTP_METHODS[-1]}")

actionpack/lib/action_dispatch/middleware/params_parser.rb

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -26,30 +26,29 @@ def initialize(app, parsers = {})
2626
end
2727

2828
def call(env)
29-
default = env["action_dispatch.request.request_parameters"]
30-
env["action_dispatch.request.request_parameters"] = parse_formatted_parameters(env, @parsers, default)
29+
request = Request.new(env)
30+
31+
request.request_parameters = parse_formatted_parameters(request, @parsers)
3132

3233
@app.call(env)
3334
end
3435

3536
private
36-
def parse_formatted_parameters(env, parsers, default)
37-
request = Request.new(env)
38-
39-
return default if request.content_length.zero?
37+
def parse_formatted_parameters(request, parsers)
38+
return if request.content_length.zero?
4039

41-
strategy = parsers.fetch(request.content_mime_type) { return default }
40+
strategy = parsers.fetch(request.content_mime_type) { return nil }
4241

4342
strategy.call(request.raw_post)
4443

4544
rescue => e # JSON or Ruby code block errors
46-
logger(env).debug "Error occurred while parsing request parameters.\nContents:\n\n#{request.raw_post}"
45+
logger(request).debug "Error occurred while parsing request parameters.\nContents:\n\n#{request.raw_post}"
4746

4847
raise ParseError.new(e.message, e)
4948
end
5049

51-
def logger(env)
52-
env['action_dispatch.logger'] || ActiveSupport::Logger.new($stderr)
50+
def logger(request)
51+
request.logger || ActiveSupport::Logger.new($stderr)
5352
end
5453
end
5554
end

0 commit comments

Comments
 (0)