class AppFigures::Client

Attributes

client_key[R]
credentials[R]

Public Class Methods

new(options = {}) click to toggle source
# File lib/app_figures/client.rb, line 10
def initialize(options = {})
  options ||= {}
  options = default_options.merge(options)

  @client_key = options[:client_key]
  @credentials = options[:credentials]

  check_configuration!
end

Public Instance Methods

external_accounts() click to toggle source
# File lib/app_figures/client.rb, line 39
def external_accounts
  response = self.class.get('/external_accounts', headers: authorization_headers)
  handle_request_status(response)
end
list_products(store = nil, query = {}) click to toggle source
# File lib/app_figures/client.rb, line 30
def list_products(store = nil, query = {})
  if store
    query = query.merge({store: store})
  end

  response = self.class.get('/products/mine', query: query, headers: authorization_headers)
  handle_request_status(response)
end
product_by_id(id) click to toggle source
# File lib/app_figures/client.rb, line 25
def product_by_id(id)
  response = self.class.get("/products/#{id}", headers: authorization_headers)
  handle_request_status(response)
end
sales(query = {}) click to toggle source
# File lib/app_figures/client.rb, line 20
def sales(query = {})
  response = self.class.get('/sales', query: query, headers: authorization_headers)
  handle_request_status(response)
end

Private Instance Methods

authorization_headers() click to toggle source
# File lib/app_figures/client.rb, line 46
def authorization_headers
  {
    'X-Client-Key' => client_key,
    'Authorization' => "Basic #{credentials}"
  }
end
check_configuration!() click to toggle source
# File lib/app_figures/client.rb, line 60
def check_configuration!
  if client_key.nil? or client_key == ''
    raise Errors::AuthorizationError.new('client_key is required.')
  end

  if credentials.nil? or credentials == ''
    raise Errors::AuthorizationError.new('credentials is required.')
  end
end
default_options() click to toggle source
# File lib/app_figures/client.rb, line 53
def default_options
  {
    client_key:  ENV['APPFIGURES_CLIENT_KEY'],
    credentials: ENV['APPFIGURES_CREDENTIALS']
  }
end
handle_request_status(response) click to toggle source
# File lib/app_figures/client.rb, line 70
def handle_request_status(response)
  case response.code
    when 403
      raise Errors::Forbidden.new(response.message)
    when 404
      raise Errors::NotFound.new
    when 500...600
      raise Errors::BadRequest.new(response.code)
    else
      response
  end
end