class Apiphobic::Middleware::Converters::RequestMethod
Constants
- OVERRIDE_KEY
Attributes
request[RW]
Public Class Methods
new(app)
click to toggle source
# File lib/apiphobic/middleware/converters/request_method.rb, line 16 def initialize(app) @app = app end
Public Instance Methods
call(env)
click to toggle source
# File lib/apiphobic/middleware/converters/request_method.rb, line 20 def call(env) self.request = Rack::Request.new(env) allowed_overrides = configuration.allowed_method_overrides allowed_overrides.each do |path_pattern, method_mappings| path_pattern = path_pattern .gsub(':uuid', '[0-9a-f]{8}\\-(?:[0-9a-f]{4}\\-){3}[0-9a-f]{12}') next unless env['PATH_INFO'] =~ Regexp.new("\\A#{path_pattern}\\z") method_mappings.each do |from, to| next unless from.include?(env['REQUEST_METHOD'].downcase) next unless to.include?(overridden_method.downcase) env['rack.methodoverride.original_method'] = env['REQUEST_METHOD'] env['REQUEST_METHOD'] = overridden_method.upcase end end @app.call(env) end
Private Instance Methods
overridden_method()
click to toggle source
# File lib/apiphobic/middleware/converters/request_method.rb, line 44 def overridden_method @overridden_method ||= (request.query_string && request.GET[OVERRIDE_KEY]) || (request.body && request.POST[OVERRIDE_KEY]) || '' end