# File lib/rack/methodoverride.rb, line 9 def initialize(app) @app = app end
# File lib/rack/methodoverride.rb, line 13 def call(env) if allowed_methods.include?(env[REQUEST_METHOD]) method = method_override(env) if HTTP_METHODS.include?(method) env["rack.methodoverride.original_method"] = env[REQUEST_METHOD] env[REQUEST_METHOD] = method end end @app.call(env) end
# File lib/rack/methodoverride.rb, line 25 def method_override(env) req = Request.new(env) method = method_override_param(req) || env[HTTP_METHOD_OVERRIDE_HEADER] method.to_s.upcase end
# File lib/rack/methodoverride.rb, line 34 def allowed_methods ALLOWED_METHODS end
# File lib/rack/methodoverride.rb, line 38 def method_override_param(req) req.POST[METHOD_OVERRIDE_PARAM_KEY] rescue Utils::InvalidParameterError, Utils::ParameterTypeError end