Class: OmniauthOpenidFederation::HttpClient

Inherits:
Object
  • Object
show all
Defined in:
lib/omniauth_openid_federation/http_client.rb

Constant Summary collapse

RETRYABLE_ERRORS =
[
  HTTP::Error,
  Timeout::Error,
  Errno::ECONNREFUSED,
  Errno::ETIMEDOUT
].freeze
RETRYABLE_HTTP_STATUS_CODES =
[429, 502, 503].freeze

Class Method Summary collapse

Class Method Details

.get(uri, options = {}) ⇒ HTTP::Response

Execute an HTTP GET request with retry logic

Parameters:

  • uri (String, URI)

    The URI to fetch

  • options (Hash) (defaults to: {})

    Request options

Options Hash (options):

  • :max_retries (Integer)

    Maximum number of retries (default: from config)

  • :retry_delay (Integer)

    Base retry delay in seconds (default: from config)

  • :timeout (Integer)

    Request timeout in seconds (default: from config)

  • :connect_timeout (Integer)

    Connect timeout in seconds

  • :read_timeout (Integer)

    Read timeout in seconds

  • :headers (Hash)

    Request headers

Returns:

  • (HTTP::Response)

    The HTTP response

Raises:



29
30
31
# File 'lib/omniauth_openid_federation/http_client.rb', line 29

def self.get(uri, options = {})
  request(:get, uri, options)
end

.post(uri, options = {}) ⇒ HTTP::Response

Execute an HTTP POST request with retry logic

POST defaults to max_retries: 0 because retries are not safe for non-idempotent requests. Pass max_retries explicitly when duplicate POST attempts are acceptable.

Parameters:

  • uri (String, URI)

    The URI to post to

  • options (Hash) (defaults to: {})

    Request options (same as get, plus :form)

Options Hash (options):

  • :form (Hash)

    Form parameters

Returns:

  • (HTTP::Response)

    The HTTP response

Raises:



43
44
45
# File 'lib/omniauth_openid_federation/http_client.rb', line 43

def self.post(uri, options = {})
  request(:post, uri, options)
end