move path_parameter encoding check to the request object
This commit is contained in:
parent
97a52283f8
commit
4797c4caca
@ -53,6 +53,17 @@ def initialize(env)
|
|||||||
@uuid = nil
|
@uuid = nil
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def check_path_parameters!
|
||||||
|
# If any of the path parameters has an invalid encoding then
|
||||||
|
# raise since it's likely to trigger errors further on.
|
||||||
|
path_parameters.each do |key, value|
|
||||||
|
next unless value.respond_to?(:valid_encoding?)
|
||||||
|
unless value.valid_encoding?
|
||||||
|
raise ActionController::BadRequest, "Invalid parameter: #{key} => #{value}"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
def key?(key)
|
def key?(key)
|
||||||
@env.key?(key)
|
@env.key?(key)
|
||||||
end
|
end
|
||||||
|
@ -22,14 +22,7 @@ def call(env)
|
|||||||
end
|
end
|
||||||
|
|
||||||
def serve(req)
|
def serve(req)
|
||||||
# If any of the path parameters has an invalid encoding then
|
req.check_path_parameters!
|
||||||
# raise since it's likely to trigger errors further on.
|
|
||||||
req.path_parameters.each do |key, value|
|
|
||||||
unless value.valid_encoding?
|
|
||||||
raise ActionController::BadRequest, "Invalid parameter: #{key} => #{value}"
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
uri = URI.parse(path(req.path_parameters, req))
|
uri = URI.parse(path(req.path_parameters, req))
|
||||||
|
|
||||||
unless uri.host
|
unless uri.host
|
||||||
|
@ -30,18 +30,9 @@ def initialize(defaults)
|
|||||||
def dispatcher?; true; end
|
def dispatcher?; true; end
|
||||||
|
|
||||||
def serve(req)
|
def serve(req)
|
||||||
|
req.check_path_parameters!
|
||||||
params = req.path_parameters
|
params = req.path_parameters
|
||||||
|
|
||||||
# If any of the path parameters has an invalid encoding then
|
|
||||||
# raise since it's likely to trigger errors further on.
|
|
||||||
params.each do |key, value|
|
|
||||||
next unless value.respond_to?(:valid_encoding?)
|
|
||||||
|
|
||||||
unless value.valid_encoding?
|
|
||||||
raise ActionController::BadRequest, "Invalid parameter: #{key} => #{value}"
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
prepare_params!(params)
|
prepare_params!(params)
|
||||||
|
|
||||||
# Just raise undefined constant errors if a controller was specified as default.
|
# Just raise undefined constant errors if a controller was specified as default.
|
||||||
|
Loading…
Reference in New Issue
Block a user