Parent

FaradayMiddleware::FollowRedirects

Public: Follow HTTP 30x redirects.

Constants

FOLLOW_LIMIT

Default value for max redirects followed

REDIRECTS

TODO: 307 & standards-compliant 302

Public Class Methods

new(app, options = {}) click to toggle source

Public: Initialize the middleware.

options - An options Hash (default: {}):

limit - A Numeric redirect limit (default: 3)
# File lib/faraday_middleware/response/follow_redirects.rb, line 24
def initialize(app, options = {})
  super(app)
  @options = options
end

Public Instance Methods

call(env) click to toggle source
# File lib/faraday_middleware/response/follow_redirects.rb, line 29
def call(env)
  process_response(@app.call(env), follow_limit)
end
follow_limit() click to toggle source
# File lib/faraday_middleware/response/follow_redirects.rb, line 49
def follow_limit
  @options.fetch(:limit, FOLLOW_LIMIT)
end
process_response(response, follows) click to toggle source
# File lib/faraday_middleware/response/follow_redirects.rb, line 33
def process_response(response, follows)
  response.on_complete do |env|
    if redirect? response
      raise RedirectLimitReached, response if follows.zero?
      env[:url] += response['location']
      env[:method] = :get
      response = process_response(@app.call(env), follows - 1)
    end
  end
  response
end
redirect?(response) click to toggle source
# File lib/faraday_middleware/response/follow_redirects.rb, line 45
def redirect?(response)
  REDIRECTS.include? response.status
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.