Sha256: ef5d8166d9b1c13b2da566f124c953988e84f83283ef2d7fc8ec65cf433aa43d

Contents?: true

Size: 919 Bytes

Versions: 12

Compression:

Stored size: 919 Bytes

Contents

class LHC::Retry < LHC::Interceptor
  attr_accessor :retries, :current_retry

  class << self
    attr_accessor :max
  end

  def after_response(response)
    response.request.options[:retries] ||= 0
    return unless retry?(response.request)
    response.request.options[:retries] += 1
    current_retry = response.request.options[:retries]
    begin
      response.request.run!
    rescue LHC::Error
      return
    end
    response.request.response if current_retry == response.request.options[:retries]
  end

  private

  def retry?(request)
    return false if request.response.success?
    return false unless request.options.dig(:retry)
    request.options[:retries] < max(request)
  end

  def max(request)
    options(request).is_a?(Hash) ? options(request).fetch(:max, LHC::Retry.max) : LHC::Retry.max
  end

  def options(request)
    @options ||= request.options.dig(:retry)
  end
end

LHC::Retry.max = 3

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
lhc-7.3.3 lib/lhc/interceptors/retry.rb
lhc-7.3.2 lib/lhc/interceptors/retry.rb
lhc-7.3.1 lib/lhc/interceptors/retry.rb
lhc-7.3.0 lib/lhc/interceptors/retry.rb
lhc-7.2.0 lib/lhc/interceptors/retry.rb
lhc-7.1.0 lib/lhc/interceptors/retry.rb
lhc-7.0.1 lib/lhc/interceptors/retry.rb
lhc-7.0.0 lib/lhc/interceptors/retry.rb
lhc-7.0.0.beta1 lib/lhc/interceptors/retry.rb
lhc-6.7.2 lib/lhc/interceptors/retry.rb
lhc-6.7.1 lib/lhc/interceptors/retry.rb
lhc-6.7.0 lib/lhc/interceptors/retry.rb