aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack/lib/action_controller/request.rb
diff options
context:
space:
mode:
Diffstat (limited to 'actionpack/lib/action_controller/request.rb')
-rwxr-xr-xactionpack/lib/action_controller/request.rb17
1 files changed, 17 insertions, 0 deletions
diff --git a/actionpack/lib/action_controller/request.rb b/actionpack/lib/action_controller/request.rb
index 3ed8c2f08d..6a9b74d426 100755
--- a/actionpack/lib/action_controller/request.rb
+++ b/actionpack/lib/action_controller/request.rb
@@ -295,5 +295,22 @@ module ActionController
def reset_session #:nodoc:
end
+
+
+ def self.parse_formatted_request_parameters(mime_type, body)
+ case strategy = ActionController::Base.param_parsers[mime_type]
+ when Proc
+ strategy.call(body)
+ when :xml_simple, :xml_node
+ body.blank? ? {} : Hash.from_xml(body).with_indifferent_access
+ when :yaml
+ YAML.load(body)
+ else
+ {}
+ end
+ rescue Exception => e # YAML, XML or Ruby code block errors
+ { "exception" => "#{e.message} (#{e.class})", "backtrace" => e.backtrace,
+ "body" => body, "format" => mime_type }
+ end
end
end