aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRafael Mendonça França <rafaelmfranca@gmail.com>2013-07-09 01:35:33 -0700
committerRafael Mendonça França <rafaelmfranca@gmail.com>2013-07-09 01:35:33 -0700
commit590c9d418ae8e81ae6fca9b3c0d40e3a82a05ea6 (patch)
treebe91b87d2a5d7f01ff0cbc765856d37130c0132f
parent74da4d1ad295455407dd1ff7eb425daa818b392b (diff)
parentf6746c024531740900d79236944ce11c65608cde (diff)
downloadrails-590c9d418ae8e81ae6fca9b3c0d40e3a82a05ea6.tar.gz
rails-590c9d418ae8e81ae6fca9b3c0d40e3a82a05ea6.tar.bz2
rails-590c9d418ae8e81ae6fca9b3c0d40e3a82a05ea6.zip
Merge pull request #11353 from jetthoughts/revert_to_raw_post
Use Request#raw_post instead Request#body in ParamsParser#parse_formatted_parameters
-rw-r--r--actionpack/CHANGELOG.md7
-rw-r--r--actionpack/lib/action_dispatch/middleware/params_parser.rb2
-rw-r--r--actionpack/test/dispatch/request/json_params_parsing_test.rb7
3 files changed, 15 insertions, 1 deletions
diff --git a/actionpack/CHANGELOG.md b/actionpack/CHANGELOG.md
index e2a6ced1dc..ea1d090bc2 100644
--- a/actionpack/CHANGELOG.md
+++ b/actionpack/CHANGELOG.md
@@ -1,3 +1,10 @@
+* Fix `ActionDispatch::ParamsParser#parse_formatted_parameters` to rewind body input stream on
+ parsing json params.
+
+ Fixes #11345
+
+ *Yuri Bol*, *Paul Nikitochkin*
+
* Ignore spaces around delimiter in Set-Cookie header.
*Yamagishi Kazutoshi*
diff --git a/actionpack/lib/action_dispatch/middleware/params_parser.rb b/actionpack/lib/action_dispatch/middleware/params_parser.rb
index fb70b60ef6..b426183488 100644
--- a/actionpack/lib/action_dispatch/middleware/params_parser.rb
+++ b/actionpack/lib/action_dispatch/middleware/params_parser.rb
@@ -41,7 +41,7 @@ module ActionDispatch
when Proc
strategy.call(request.raw_post)
when :json
- data = ActiveSupport::JSON.decode(request.body)
+ data = ActiveSupport::JSON.decode(request.raw_post)
data = {:_json => data} unless data.is_a?(Hash)
Request::Utils.deep_munge(data).with_indifferent_access
else
diff --git a/actionpack/test/dispatch/request/json_params_parsing_test.rb b/actionpack/test/dispatch/request/json_params_parsing_test.rb
index b62ed6a8b2..dba9ab688f 100644
--- a/actionpack/test/dispatch/request/json_params_parsing_test.rb
+++ b/actionpack/test/dispatch/request/json_params_parsing_test.rb
@@ -70,6 +70,13 @@ class JsonParamsParsingTest < ActionDispatch::IntegrationTest
end
end
+ test 'raw_post is not empty for JSON request' do
+ with_test_routing do
+ post '/parse', '{"posts": [{"title": "Post Title"}]}', 'CONTENT_TYPE' => 'application/json'
+ assert_equal '{"posts": [{"title": "Post Title"}]}', request.raw_post
+ end
+ end
+
private
def assert_parses(expected, actual, headers = {})
with_test_routing do