aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRafael Mendonça França <rafaelmfranca@gmail.com>2015-08-17 13:20:09 -0300
committerRafael Mendonça França <rafaelmfranca@gmail.com>2015-08-17 13:20:09 -0300
commit15fd2586a89f27031adc5fca8e03149b3c494fdb (patch)
tree0d1eeb1554da0187325d4e59a112591416eef438
parent7985908beac7a625f545097dba9460c4355d70e4 (diff)
parent9366d622bef3322284dcb4d34c8b1a383d04590c (diff)
downloadrails-15fd2586a89f27031adc5fca8e03149b3c494fdb.tar.gz
rails-15fd2586a89f27031adc5fca8e03149b3c494fdb.tar.bz2
rails-15fd2586a89f27031adc5fca8e03149b3c494fdb.zip
Merge pull request #21252 from rodzyn/improve_params_parser
Improve params parser
-rw-r--r--actionpack/lib/action_dispatch/middleware/params_parser.rb13
1 files changed, 11 insertions, 2 deletions
diff --git a/actionpack/lib/action_dispatch/middleware/params_parser.rb b/actionpack/lib/action_dispatch/middleware/params_parser.rb
index e65279a285..402ad778fa 100644
--- a/actionpack/lib/action_dispatch/middleware/params_parser.rb
+++ b/actionpack/lib/action_dispatch/middleware/params_parser.rb
@@ -1,9 +1,14 @@
-require 'active_support/core_ext/hash/conversions'
require 'action_dispatch/http/request'
-require 'active_support/core_ext/hash/indifferent_access'
module ActionDispatch
+ # ActionDispatch::ParamsParser works for all the requests having any Content-Length
+ # (like POST). It takes raw data from the request and puts it through the parser
+ # that is picked based on Content-Type header.
+ #
+ # In case of any error while parsing data ParamsParser::ParseError is raised.
class ParamsParser
+ # Raised when raw data from the request cannot be parsed by the parser
+ # defined for request's content mime type.
class ParseError < StandardError
attr_reader :original_exception
@@ -21,6 +26,10 @@ module ActionDispatch
}
}
+ # Create a new +ParamsParser+ middleware instance.
+ #
+ # The +parsers+ argument can take Hash of parsers where key is identifying
+ # content mime type, and value is a lambda that is going to process data.
def initialize(app, parsers = {})
@app, @parsers = app, DEFAULT_PARSERS.merge(parsers)
end