Parent

FaradayMiddleware::MethodOverride

Public: Writes the original HTTP method to “X-Http-Method-Override” header and sends the request as POST.

This can be used to work around technical issues with making non-POST requests, e.g. faulty HTTP client or server router.

This header is recognized in Rack apps by default, courtesy of the Rack::MethodOverride module. See rack.rubyforge.org/doc/classes/Rack/MethodOverride.html

Constants

HEADER

Public Class Methods

new(app, options = nil) click to toggle source

Public: Initialize the middleware.

app - the Faraday app to wrap options - (optional)

:rewrite - Array of HTTP methods to rewrite
           (default: all but GET and POST)
# File lib/faraday_middleware/request/method_override.rb, line 23
def initialize(app, options = nil)
  super(app)
  @methods = options && options.fetch(:rewrite).map { |method|
    method = method.downcase if method.respond_to? :downcase
    method.to_sym
  }
end

Public Instance Methods

call(env) click to toggle source
# File lib/faraday_middleware/request/method_override.rb, line 31
def call(env)
  method = env[:method]
  rewrite_request(env, method) if rewrite_request?(method)
  @app.call(env)
end
rewrite_request(env, original_method) click to toggle source

Internal: Write the original HTTP method to header, change method to POST.

# File lib/faraday_middleware/request/method_override.rb, line 46
def rewrite_request(env, original_method)
  env[:request_headers][HEADER] = original_method.to_s.upcase
  env[:method] = :post
end
rewrite_request?(method) click to toggle source
# File lib/faraday_middleware/request/method_override.rb, line 37
def rewrite_request?(method)
  if @methods.nil? or @methods.empty?
    method != :get and method != :post
  else
    @methods.include? method
  end
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.