module Roda::RodaPlugins::NotAllowed::RequestMethods
Public Instance Methods
Source
# File lib/roda/plugins/not_allowed.rb, line 84 def is(*args) super(*args) do begin is_verbs = @_is_verbs = [] ret = if args.empty? yield else yield(*captures) end unless is_verbs.empty? method_not_allowed(is_verbs.join(', ')) end ret ensure @_is_verbs = nil end end end
Keep track of verb calls inside the block. If there are any verb calls inside the block, but the block returned, assume that the verb calls inside the block did not match, and since there was already a successful terminal match, the request method must not be allowed, so return a 405 response in that case.
Calls superclass method
Source
# File lib/roda/plugins/not_allowed.rb, line 108 def root super if @remaining_path == "/" && !is_get? always{method_not_allowed("GET")} end end
Treat r.root
similar to r.get ''
, using a 405 response for non-GET requests.
Calls superclass method
Private Instance Methods
Source
# File lib/roda/plugins/not_allowed.rb, line 138 def method_not_allowed(verbs) res = response res.status = 405 res[RodaResponseHeaders::ALLOW] = verbs nil end
Set the response status to 405 (Method Not Allowed), and set the Allow header to the given string of allowed request methods.