Class: OmniauthOidc::ConfigFetcher

Inherits:
Object
  • Object
show all
Defined in:
lib/omniauth/oidc/config_fetcher.rb

Overview

Fetches and parses OpenID Connect configuration from .well-known endpoint

Defined Under Namespace

Classes: Config

Class Method Summary collapse

Class Method Details

.fetch(endpoint_url, max_retries: 3) ⇒ Object



47
48
49
50
51
52
53
54
55
56
57
58
59
60
# File 'lib/omniauth/oidc/config_fetcher.rb', line 47

def fetch(endpoint_url, max_retries: 3)
  retries = 0
  begin
    response = OmniauthOidc::HttpClient.get(endpoint_url)
    symbolized_config = deep_symbolize_keys(response)
    Config.new(symbolized_config)
  rescue OmniauthOidc::HttpClient::HttpError => e
    retries += 1
    retry if retries < max_retries
    raise OmniauthOidc::ConfigurationError, "Failed to fetch OIDC configuration: #{e.message}"
  rescue StandardError => e
    raise OmniauthOidc::ConfigurationError, "Failed to fetch OIDC configuration: #{e.message}"
  end
end