diff options
author | Rick Olson <technoweenie@gmail.com> | 2008-04-08 05:05:54 +0000 |
---|---|---|
committer | Rick Olson <technoweenie@gmail.com> | 2008-04-08 05:05:54 +0000 |
commit | 4d594cffcfc93b37fad4e423ec8593299e50133c (patch) | |
tree | 59643ee7a1eec4e3208f81f6e344a66207f648ec /actionpack/lib/action_controller/request.rb | |
parent | 0ff7a2d89fc95dcb0a32ed92aab7156b0778a7ea (diff) | |
download | rails-4d594cffcfc93b37fad4e423ec8593299e50133c.tar.gz rails-4d594cffcfc93b37fad4e423ec8593299e50133c.tar.bz2 rails-4d594cffcfc93b37fad4e423ec8593299e50133c.zip |
Automatically parse posted JSON content for Mime::JSON requests. [rick]
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@9242 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
Diffstat (limited to 'actionpack/lib/action_controller/request.rb')
-rwxr-xr-x | actionpack/lib/action_controller/request.rb | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/actionpack/lib/action_controller/request.rb b/actionpack/lib/action_controller/request.rb index 745161def8..823271d13f 100755 --- a/actionpack/lib/action_controller/request.rb +++ b/actionpack/lib/action_controller/request.rb @@ -402,6 +402,14 @@ EOM body.blank? ? {} : Hash.from_xml(body).with_indifferent_access when :yaml YAML.load(body) + when :json + if body.blank? + {} + else + data = ActiveSupport::JSON.decode(body) + data = {:_json => data} unless data.is_a?(Hash) + data.with_indifferent_access + end else {} end @@ -507,7 +515,6 @@ EOM end end - MULTIPART_BOUNDARY = %r|\Amultipart/form-data.*boundary=\"?([^\";,]+)\"?|n EOL = "\015\012" @@ -604,12 +611,12 @@ EOM end raise EOFError, "bad boundary end of body part" unless boundary_end=~/--/ - begin + begin body.rewind if body.respond_to?(:rewind) - rescue Errno::ESPIPE + rescue Errno::ESPIPE # Handles exceptions raised by input streams that cannot be rewound # such as when using plain CGI under Apache - end + end params end |