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