Last Update: 2024-05-14 15:30:12 +0000



:oauth plugin

The :oauth plugin manages the handling of a given OAuth session, in that it ships with convenience methods to generate a new access token, which it then injects in all requests.

More info under honeyryderchuck.gitlab.io/httpx/wiki/OAuth

session callbacks

HTTP request/response lifecycle events have now the ability of being intercepted via public API callback methods:

HTTPX.on_request_completed do |request|
  puts "request to #{request.uri} sent"

More info under honeyryderchuck.gitlab.io/httpx/wiki/Events to know which events and callback methods are supported.

:circuit_breaker plugin on_circuit_open callback

A callback has been introduced for the :circuit_breaker plugin, which is triggered when a circuit is opened.

http = HTTPX.plugin(:circuit_breaker).on_circuit_open do |req|
  puts "circuit opened for #{req.uri}"


Several :response_cache features have been improved:

  • :response_cache plugin: response cache store has been made thread-safe.

  • cached response sharing across threads is made safer, as stringio/tempfile instances are copied instead of shared (without copying the underling string/file).

  • stale cached responses are eliminate on cache store lookup/store operations.

  • already closed responses are evicted from the cache store.

  • fallback for lack of compatible response “date” header has been fixed to return a Time object.


  • Ability to recover from errors happening during response chunk processing (required for overriding behaviour and response chunk callbacks); error bubbling up will result in the connection being closed.

  • Happy eyeballs support for multi-homed early-resolved domain names (such as localhost under /etc/hosts) was broken, as it would try the first given IP; so, if given ::1 and connection would fail, it wouldn’t try, which would have succeeded.

  • :digest_authentication plugin was removing the “algorithm” header on -sess declared algorithms, which is required for HTTP digest auth negotiation.