Sha256: 4d980225c29f4e7b4fe1359d69f8f401f85e5c05838bb06019e33e98a3ca8c12

Contents?: true

Size: 1007 Bytes

Versions: 12

Compression:

Stored size: 1007 Bytes

Contents

# frozen_string_literal: true

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

  class << self
    attr_accessor :max, :all
  end

  def after_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 if request.error_ignored?
    return false if !request.options.dig(:retry) && !LHC::Retry.all

    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-15.2.1 lib/lhc/interceptors/retry.rb
lhc-15.2.0 lib/lhc/interceptors/retry.rb
lhc-15.1.3 lib/lhc/interceptors/retry.rb
lhc-15.1.2 lib/lhc/interceptors/retry.rb
lhc-15.1.1 lib/lhc/interceptors/retry.rb
lhc-15.1.0 lib/lhc/interceptors/retry.rb
lhc-16.0.0.pre.pro2162.2 lib/lhc/interceptors/retry.rb
lhc-16.0.0.pre.pro2162 lib/lhc/interceptors/retry.rb
lhc-15.0.1 lib/lhc/interceptors/retry.rb
lhc-15.0.0 lib/lhc/interceptors/retry.rb
lhc-14.0.0 lib/lhc/interceptors/retry.rb
lhc-13.4.0.pre.pro1766.1 lib/lhc/interceptors/retry.rb