module ActionDispatch::Http::Parameters
def log_parse_error_once
def log_parse_error_once @parse_error_logged ||= begin parse_logger = logger || ActiveSupport::Logger.new($stderr) parse_logger.debug <<~MSG.chomp Error occurred while parsing request parameters. Contents: #{raw_post} MSG end end
def parameters
def parameters params = get_header("action_dispatch.request.parameters") return params if params params = begin request_parameters.merge(query_parameters) rescue EOFError query_parameters.dup end params.merge!(path_parameters) set_header("action_dispatch.request.parameters", params) params end
def params_parsers
def params_parsers ActionDispatch::Request.parameter_parsers end
def parse_formatted_parameters(parsers)
def parse_formatted_parameters(parsers) return yield if content_length.zero? || content_mime_type.nil? strategy = parsers.fetch(content_mime_type.symbol) { return yield } begin strategy.call(raw_post) rescue # JSON or Ruby code block errors. log_parse_error_once raise ParseError, "Error occurred while parsing request parameters" end end
def path_parameters
Returned hash keys are symbols:
Returns a hash with the \parameters used to form the \path of the request.
def path_parameters get_header(PARAMETERS_KEY) || set_header(PARAMETERS_KEY, {}) end
def path_parameters=(parameters) # :nodoc:
def path_parameters=(parameters) # :nodoc: delete_header("action_dispatch.request.parameters") parameters = Request::Utils.set_binary_encoding(self, parameters, parameters[:controller], parameters[:action]) # If any of the path parameters has an invalid encoding then # raise since it's likely to trigger errors further on. Request::Utils.check_param_encoding(parameters) set_header PARAMETERS_KEY, parameters rescue Rack::Utils::ParameterTypeError, Rack::Utils::InvalidParameterError => e raise ActionController::BadRequest.new("Invalid path parameters: #{e.message}") end