Add docs to Kemal::OverrideMethodHandler
This commit is contained in:
parent
3f7c8b4577
commit
a60168d039
1 changed files with 11 additions and 2 deletions
|
@ -1,4 +1,13 @@
|
||||||
module Kemal
|
module Kemal
|
||||||
|
# Adds support for `_method` magic parameter to simulate PUT, PATCH, DELETE requests in an html form.
|
||||||
|
#
|
||||||
|
# This middleware is **not** in the default Kemal handlers. You need to explicitly add this to your handlers:
|
||||||
|
#
|
||||||
|
# ```ruby
|
||||||
|
# add_handler Kemal::OverrideMethodHandler
|
||||||
|
# ```
|
||||||
|
#
|
||||||
|
# **Important:** This middleware consumes `params.body` to read the `_method` magic parameter.
|
||||||
class OverrideMethodHandler
|
class OverrideMethodHandler
|
||||||
include HTTP::Handler
|
include HTTP::Handler
|
||||||
INSTANCE = new
|
INSTANCE = new
|
||||||
|
@ -10,14 +19,14 @@ module Kemal
|
||||||
def call(context)
|
def call(context)
|
||||||
request = context.request
|
request = context.request
|
||||||
if request.method == OVERRIDE_METHOD
|
if request.method == OVERRIDE_METHOD
|
||||||
if context.params.body.has_key?(OVERRIDE_METHOD_PARAM_KEY) && override_method_valid?(context.params.body["_method"])
|
if context.params.body.has_key?(OVERRIDE_METHOD_PARAM_KEY) && override_method_valid?(context.params.body[OVERRIDE_METHOD_PARAM_KEY])
|
||||||
request.method = context.params.body["_method"].upcase
|
request.method = context.params.body["_method"].upcase
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
call_next(context)
|
call_next(context)
|
||||||
end
|
end
|
||||||
|
|
||||||
def override_method_valid?(override_method : String)
|
private def override_method_valid?(override_method : String)
|
||||||
ALLOWED_METHODS.includes?(override_method.upcase)
|
ALLOWED_METHODS.includes?(override_method.upcase)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in a new issue