module JSON::JWK::Set::Fetcher

Public Class Methods

cache() click to toggle source
# File lib/json/jwk/set/fetcher.rb, line 56
def self.cache
  @@cache
end
cache=(cache) click to toggle source
# File lib/json/jwk/set/fetcher.rb, line 53
def self.cache=(cache)
  @@cache = cache
end
debug() { || ... } click to toggle source
# File lib/json/jwk/set/fetcher.rb, line 31
def self.debug(&block)
  original = self.debugging?
  debug!
  yield
ensure
  self.debugging = original
end
debug!() click to toggle source
# File lib/json/jwk/set/fetcher.rb, line 28
def self.debug!
  self.debugging = true
end
debugging=(boolean) click to toggle source
# File lib/json/jwk/set/fetcher.rb, line 25
def self.debugging=(boolean)
  @@debugging = boolean
end
debugging?() click to toggle source
# File lib/json/jwk/set/fetcher.rb, line 22
def self.debugging?
  @@debugging
end
fetch(jwks_uri, kid:, auto_detect: true, **options) click to toggle source
# File lib/json/jwk/set/fetcher.rb, line 61
def self.fetch(jwks_uri, kid:, auto_detect: true, **options)
  cache_key = [
    'json:jwk:set',
    OpenSSL::Digest::MD5.hexdigest(jwks_uri),
    kid
  ].collect(&:to_s).join(':')

  jwks = Set.new(
    JSON.parse(
      cache.fetch(cache_key, options) do
        http_client.get(jwks_uri).body
      end
    )
  )
  cache.delete(cache_key, options) if jwks[kid].blank?

  if auto_detect
    jwks[kid] or raise KidNotFound
  else
    jwks
  end
end
http_client() click to toggle source
# File lib/json/jwk/set/fetcher.rb, line 40
def self.http_client
  Faraday.new(headers: {user_agent: "JSON::JWK::Set::Fetcher #{VERSION}"}) do |faraday|
    faraday.response :raise_error
    faraday.response :follow_redirects
    faraday.response :logger, JSON::JWK::Set::Fetcher.logger if debugging?
    faraday.adapter Faraday.default_adapter
    http_config.try(:call, faraday)
  end
end
http_config(&block) click to toggle source
# File lib/json/jwk/set/fetcher.rb, line 49
def self.http_config(&block)
  @@http_config ||= block
end
logger() click to toggle source
# File lib/json/jwk/set/fetcher.rb, line 13
def self.logger
  @@logger
end
logger=(logger) click to toggle source
# File lib/json/jwk/set/fetcher.rb, line 16
def self.logger=(logger)
  @@logger = logger
end