Class: Rack::JSONP::MethodOverride

Inherits:
Object
  • Object
show all
Defined in:
lib/rack/jsonp/method_override.rb

Constant Summary collapse

HTTP_METHODS =
%w(GET HEAD PUT POST DELETE OPTIONS PATCH)

Instance Method Summary collapse

Constructor Details

#initialize(app, method_override_param = '_method', callback_param = 'callback') ⇒ MethodOverride

Returns a new instance of MethodOverride.



6
7
8
9
10
# File 'lib/rack/jsonp/method_override.rb', line 6

def initialize(app, method_override_param = '_method', callback_param = 'callback')
  @app = app
  @method_override_param = method_override_param
  @callback_param = callback_param
end

Instance Method Details

#call(env) ⇒ Object



12
13
14
15
16
17
18
19
20
21
22
# File 'lib/rack/jsonp/method_override.rb', line 12

def call(env)
  request = Rack::Request.new(env)
  method_override = request.params[@method_override_param]

  if jsonp_callback_enabled?(request) && method_override && HTTP_METHODS.include?(method_override)
    env['jsonp.utils.method_override'] = method_override
    env['REQUEST_METHOD'] = method_override
  end

  @app.call(env)
end