class Rack::App::FrontEnd::Middlewares::MethodOverride
Constants
- ALLOWED_METHODS
- HTTP_METHOD_OVERRIDE_HEADER
- METHOD_OVERRIDE_PARAM_KEY
Public Class Methods
new(app)
click to toggle source
# File lib/rack/app/front_end/middlewares/method_override.rb, line 7 def initialize(app) @app = app end
Public Instance Methods
call(env)
click to toggle source
# File lib/rack/app/front_end/middlewares/method_override.rb, line 11 def call(env) if affected_request?(env) try_override(env) end @app.call(env) end
Protected Instance Methods
affected_request?(env)
click to toggle source
# File lib/rack/app/front_end/middlewares/method_override.rb, line 37 def affected_request?(env) ALLOWED_METHODS.include?(env[Rack::REQUEST_METHOD]) end
method_override(env)
click to toggle source
# File lib/rack/app/front_end/middlewares/method_override.rb, line 41 def method_override(env) req = Rack::Request.new(env) method = env[HTTP_METHOD_OVERRIDE_HEADER] || method_override_param(req,:POST) || method_override_param(req,:GET) method.to_s.upcase end
method_override_param(req, http_method)
click to toggle source
# File lib/rack/app/front_end/middlewares/method_override.rb, line 50 def method_override_param(req, http_method) req.__send__(http_method)[METHOD_OVERRIDE_PARAM_KEY] rescue Rack::Utils::InvalidParameterError, Rack::Utils::ParameterTypeError end
set_request_method(method, env)
click to toggle source
# File lib/rack/app/front_end/middlewares/method_override.rb, line 28 def set_request_method(method, env) env[Rack::App::Constants::ENV::METHODOVERRIDE_ORIGINAL_METHOD] = env[Rack::REQUEST_METHOD] env[Rack::REQUEST_METHOD] = method end
try_override(env)
click to toggle source
# File lib/rack/app/front_end/middlewares/method_override.rb, line 21 def try_override(env) method = method_override(env) if valid_https_method?(method) set_request_method(method, env) end end
valid_https_method?(method)
click to toggle source
# File lib/rack/app/front_end/middlewares/method_override.rb, line 33 def valid_https_method?(method) Rack::App::Constants::HTTP::METHODS.include?(method) end