mirror of
https://gitea.invidious.io/iv-org/shard-kemal.git
synced 2024-08-15 00:53:36 +00:00
refactor Request#param_parser
This commit is contained in:
parent
5917af3f14
commit
6d12d111f4
1 changed files with 36 additions and 0 deletions
36
src/kemal/ext/request.cr
Normal file
36
src/kemal/ext/request.cr
Normal file
|
@ -0,0 +1,36 @@
|
|||
class HTTP::Request
|
||||
property override_method
|
||||
property url_params : Hash(String, String)?
|
||||
@param_parser : Kemal::ParamParser?
|
||||
|
||||
def override_method
|
||||
@override_method ||= check_for_method_override!
|
||||
end
|
||||
|
||||
def content_type
|
||||
@headers["Content-Type"]?
|
||||
end
|
||||
|
||||
def param_parser
|
||||
@param_parser ||= Kemal::ParamParser.new(self)
|
||||
end
|
||||
|
||||
# Checks if method contained in _method param is valid one
|
||||
def self.override_method_valid?(override_method : String)
|
||||
return false unless override_method.is_a?(String)
|
||||
override_method = override_method.upcase
|
||||
override_method == "PUT" || override_method == "PATCH" || override_method == "DELETE"
|
||||
end
|
||||
|
||||
# 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 = param_parser.body
|
||||
if params.has_key?("_method") && HTTP::Request.override_method_valid?(params["_method"])
|
||||
@override_method = params["_method"]
|
||||
end
|
||||
end
|
||||
@override_method
|
||||
end
|
||||
end
|
Loading…
Add table
Add a link
Reference in a new issue