Opt for built-in HTTP::Params class instead.

This commit is contained in:
Matthew Gerrior 2016-06-14 07:32:13 -04:00
parent a5e4bc21f3
commit d1f9c4394b
4 changed files with 20 additions and 59 deletions

View file

@ -11,8 +11,8 @@ class Kemal::ParamParser
def initialize(@request : HTTP::Request)
@url = {} of String => String
@query = {} of String => String | Array(String)
@body = {} of String => String | Array(String)
@query = HTTP::Params.new({} of String => Array(String))
@body = HTTP::Params.new({} of String => Array(String))
@json = {} of String => AllParamTypes
@url_parsed = false
@query_parsed = false
@ -68,26 +68,6 @@ class Kemal::ParamParser
end
def parse_part(part)
part_params = {} of String => String | Array(String)
if part
HTTP::Params.parse(part) do |key, value|
key_string = key as String
value_string = value as String
current_value = part_params[key_string]?
part_params[key_string] = if current_value
if current_value.is_a?(Array)
current_value << value_string
else
[current_value, value_string]
end
else
value_string
end
end
end
part_params
HTTP::Params.parse(part || "")
end
end

View file

@ -10,29 +10,18 @@ class HTTP::Request
# Checks if request params contain _method param to override request incoming method
private def check_for_method_override!
@override_method = @method
if @method == "POST"
params = Kemal::ParamParser.new(self).body
if params.has_key?("_method") && HTTP::Request.override_method_valid?(params["_method"])
_method = params["_method"]
@override_method = if _method.is_a?(Array)
_method.last
else
_method
end
@override_method = params["_method"]
end
end
@override_method
end
# Checks if method contained in _method param is valid one
def self.override_method_valid?(override_method)
return false unless override_method.is_a?(String) || override_method.is_a?(Array(String))
override_method = override_method.last if override_method.is_a?(Array(String))
return false unless override_method.is_a?(String)
override_method = override_method.upcase
override_method == "PUT" || override_method == "PATCH" || override_method == "DELETE"
end