class Acme::Client::Resources::Directory

Constants

DIRECTORY_META
DIRECTORY_RESOURCES

Public Class Methods

new(url, connection_options) click to toggle source
# File lib/acme/client/resources/directory.rb, line 20
def initialize(url, connection_options)
  @url, @connection_options = url, connection_options
end

Public Instance Methods

caa_identities() click to toggle source
# File lib/acme/client/resources/directory.rb, line 39
def caa_identities
  meta[DIRECTORY_META[:caa_identities]]
end
endpoint_for(key) click to toggle source
# File lib/acme/client/resources/directory.rb, line 24
def endpoint_for(key)
  directory.fetch(key) do |missing_key|
    raise Acme::Client::Error::UnsupportedOperation,
      "Directory at #{@url} does not include `#{missing_key}`"
  end
end
external_account_required() click to toggle source
# File lib/acme/client/resources/directory.rb, line 43
def external_account_required
  meta[DIRECTORY_META[:external_account_required]]
end
meta() click to toggle source
# File lib/acme/client/resources/directory.rb, line 47
def meta
  directory[:meta]
end
terms_of_service() click to toggle source
# File lib/acme/client/resources/directory.rb, line 31
def terms_of_service
  meta[DIRECTORY_META[:terms_of_service]]
end
website() click to toggle source
# File lib/acme/client/resources/directory.rb, line 35
def website
  meta[DIRECTORY_META[:website]]
end

Private Instance Methods

directory() click to toggle source
# File lib/acme/client/resources/directory.rb, line 53
def directory
  @directory ||= load_directory
end
fetch_directory() click to toggle source
# File lib/acme/client/resources/directory.rb, line 70
def fetch_directory
  connection = Faraday.new(url: @directory, **@connection_options) do |configuration|
    configuration.use Acme::Client::FaradayMiddleware, client: nil, mode: nil

    configuration.adapter Faraday.default_adapter
  end
  connection.headers[:user_agent] = Acme::Client::USER_AGENT
  response = connection.get(@url)
  response.body
end
load_directory() click to toggle source
# File lib/acme/client/resources/directory.rb, line 57
def load_directory
  body = fetch_directory
  result = {}
  result[:meta] = body.delete('meta')
  DIRECTORY_RESOURCES.each do |key, entry|
    result[key] = URI(body[entry]) if body[entry]
  end
  result
rescue JSON::ParserError => exception
  raise Acme::Client::Error::InvalidDirectory,
    "Invalid directory url\n#{@directory} did not return a valid directory\n#{exception.inspect}"
end