class BaremetricsAPI::Client

Attributes

configuration[R]

Public Class Methods

new(options = nil) click to toggle source
# File lib/baremetrics_api/client.rb, line 17
def initialize(options = nil)
  @configuration = nil
  append_request_methods_to_class

  return if options.nil?

  @configuration = Configuration.new(options)

  ensure_valid_configuration
end

Public Instance Methods

configure() { |configuration| ... } click to toggle source

Configure the API client @yield [Configuration] the configuration @example Basic configuration

BaremetricsAPI.client.configure do |config|
  config.api_key = 'test123'
  config.response_limit = '30'
end
# File lib/baremetrics_api/client.rb, line 35
def configure
  raise Error::AlreadyConfigured unless @configuration.nil?

  @configuration = Configuration.new
  yield(@configuration)

  ensure_valid_configuration
end
connection() click to toggle source

Returns the raw Faraday connection configured using the current configuration

# File lib/baremetrics_api/client.rb, line 45
def connection
  ensure_valid_configuration
  host = configuration.sandbox ? Constants::SANDBOX_API_HOST : Constants::API_HOST
  Faraday.new(host, headers: { authorization: "Bearer #{configuration.api_key}", content_type: 'application/json', accept: 'application/json' }) do |f|
    f.request :json
    f.response :logger if configuration.log_traffic
    f.use Faraday::RateChecker
    f.adapter :httpclient
  end
end

Private Instance Methods

add_method(instance, method_name) click to toggle source
# File lib/baremetrics_api/client.rb, line 88
def add_method(instance, method_name)
  define_singleton_method(method_name) do |*args|
    instance.public_send(method_name, *args)
  end
end
append_request_methods_to_class() click to toggle source

The methods below are responsible for appending methods from the endpoint classes onto the client. This allows for simple interaction with the gem. For example: client.retrieve_account instead of BaremetricsAPI::Endpoint::Account.new(client).retrieve_account

# File lib/baremetrics_api/client.rb, line 75
def append_request_methods_to_class
  Constants::ENDPOINT_CLASSES.each do |endpoint_class|
    endpoint_instance = endpoint_class.new(self)
    create_methods_from_instance(endpoint_instance)
  end
end
create_methods_from_instance(instance) click to toggle source
# File lib/baremetrics_api/client.rb, line 82
def create_methods_from_instance(instance)
  instance.public_methods(false).each do |method_name|
    add_method(instance, method_name)
  end
end
ensure_valid_configuration() click to toggle source
# File lib/baremetrics_api/client.rb, line 58
def ensure_valid_configuration
  if configuration.nil? || !configuration.valid?
    # nil out the configuration so we can reconfigure
    @configuration = nil
    raise Error::MissingConfigurationKeys
  else
    # Lock in the configuration so it can't be changed during app usage
    @configuration.freeze
  end
end