class FaradayMiddleware::Request::RetryUtil

Standalone HTTP request retry utility class Can be used outside of FaradayMiddleware, e.g. when Faraday::UploadIO is used

Constants

DEFAULT_ERROR_CODES
DEFAULT_RETRY_AFTER

Attributes

error_codes[RW]
retry_after[RW]

Public Class Methods

new(opts = {}) click to toggle source
# File lib/faraday_middleware-request-retry/retry.rb, line 42
def initialize(opts = {})
  @error_codes = opts[:error_codes] || DEFAULT_ERROR_CODES
  @retry_after = opts[:retry_after] || DEFAULT_RETRY_AFTER
  @logger = opts[:logger]
end

Public Instance Methods

retry_status(status, this_retry_after = nil) click to toggle source
# File lib/faraday_middleware-request-retry/retry.rb, line 48
def retry_status(status, this_retry_after = nil)
  return false unless @error_codes.include? status
  seconds_left = (this_retry_after || @retry_after).to_i
  @logger.warn "You have been rate limited. Retrying in #{seconds_left} seconds..." if @logger
  seconds_left.times do |i|
    sleep 1
    time_left = seconds_left - i
    @logger.warn "#{time_left}..." if time_left > 0 && time_left % 5 == 0 && @logger
  end
  @logger.warn 'Retrying...' if @logger
  true
end