class EasybillRestClient::RetryOn

Attributes

logger[R]
retry_cool_off_time[R]
tries[R]

Public Class Methods

new(logger, tries, retry_cool_off_time) click to toggle source
# File lib/easybill_rest_client/retry_on.rb, line 7
def initialize(logger, tries, retry_cool_off_time)
  @logger = logger
  @tries = tries
  @retry_cool_off_time = retry_cool_off_time
end

Public Instance Methods

retry_on(klass, &block) click to toggle source
# File lib/easybill_rest_client/retry_on.rb, line 13
def retry_on(klass, &block)
  Retryable.retryable(retryable_opts(klass), &block)
end

Private Instance Methods

log_open_timeout(_exception) click to toggle source
# File lib/easybill_rest_client/retry_on.rb, line 38
def log_open_timeout(_exception)
  logger.warn("Unable to open connection after #{Request::OPEN_TIMEOUT}s, retrying...")
end
log_too_many_requests(_exception) click to toggle source
# File lib/easybill_rest_client/retry_on.rb, line 42
def log_too_many_requests(_exception)
  logger.warn('Too many requests!')
end
retryable_opts(klass) click to toggle source
# File lib/easybill_rest_client/retry_on.rb, line 21
def retryable_opts(klass)
  {
    EasybillRestClient::TooManyRequests => {
      tries: tries,
      sleep: retry_cool_off_time,
      on: klass,
      exception_cb: method(:log_too_many_requests)
    },
    Net::OpenTimeout => {
      tries: tries,
      sleep: 0,
      on: klass,
      exception_cb: method(:log_open_timeout)
    }
  }.fetch(klass)
end