class Rack::MethodOverride
Constants
- ALLOWED_METHODS
- HTTP_METHODS
- HTTP_METHOD_OVERRIDE_HEADER
- METHOD_OVERRIDE_PARAM_KEY
Public Class Methods
new(app)
click to toggle source
# File lib/rack/method_override.rb, line 10 def initialize(app) @app = app end
Public Instance Methods
call(env)
click to toggle source
# File lib/rack/method_override.rb, line 14 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
method_override(env)
click to toggle source
# File lib/rack/method_override.rb, line 26 def method_override(env) req = Request.new(env) method = method_override_param(req) || env[HTTP_METHOD_OVERRIDE_HEADER] begin method.to_s.upcase rescue ArgumentError env[RACK_ERRORS].puts "Invalid string for method" end end
Private Instance Methods
allowed_methods()
click to toggle source
# File lib/rack/method_override.rb, line 39 def allowed_methods ALLOWED_METHODS end
method_override_param(req)
click to toggle source
# File lib/rack/method_override.rb, line 43 def method_override_param(req) req.POST[METHOD_OVERRIDE_PARAM_KEY] rescue Utils::InvalidParameterError, Utils::ParameterTypeError req.get_header(RACK_ERRORS).puts "Invalid or incomplete POST params" rescue EOFError req.get_header(RACK_ERRORS).puts "Bad request content body" end