Module: HTTPX::Plugins::CircuitBreaker::InstanceMethods

Includes:
Callbacks
Defined in:
lib/httpx/plugins/circuit_breaker.rb,
sig/plugins/circuit_breaker.rbs

Instance Method Summary collapse

Methods included from Callbacks

#callbacks, #callbacks_for?, #emit, #on, #once

Instance Method Details

#initializeObject



30
31
32
33
# File 'lib/httpx/plugins/circuit_breaker.rb', line 30

def initialize(*)
  super
  @circuit_store = CircuitStore.new(@options)
end

#try_circuit_open(request, response) ⇒ response?

Parameters:

  • request (Request)
  • response (response)

Returns:

  • (response, nil)


80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
# File 'lib/httpx/plugins/circuit_breaker.rb', line 80

def try_circuit_open(request, response)
  if response.is_a?(ErrorResponse)
    case response.error
    when RequestTimeoutError
      @circuit_store.try_open(request.uri, response)
    else
      @circuit_store.try_open(request.origin, response)
    end
  elsif (break_on = request.options.circuit_breaker_break_on) && break_on.call(response)
    @circuit_store.try_open(request.uri, response)
  else
    @circuit_store.try_close(request.uri)
    nil
  end
end