class Stripe2QB::QuickbooksApi

Attributes

access_token[R]
deposit_account[R]
deposit_fees_account[R]
deposit_fees_vendor[R]
realm_id[R]
receipt_account[R]
receipt_customer[R]
receipt_item[R]
receipt_payment_method[R]

Public Class Methods

new(options) click to toggle source
# File lib/stripe2qb/quickbooks_api.rb, line 20
def initialize(options)
  set_attribute_from_options('realm_id', options)
  @access_token = AccessToken.new(options)
  @receipt_customer = find_by_name_or_id(:customer, 'receipt_customer', options, :display_name)
  @receipt_item = find_by_name_or_id(:item, 'receipt_item', options)
  @receipt_payment_method = find_by_name_or_id(:payment_method, 'receipt_payment_method', options)
  @receipt_account = find_by_name_or_id(:account, 'receipt_account', options)
  @deposit_account = find_by_name_or_id(:account, 'deposit_account', options)
  @deposit_fees_vendor = find_by_name_or_id(:vendor, 'deposit_fees_vendor', options, :display_name)
  @deposit_fees_account = find_by_name_or_id(:account, 'deposit_fees_account', options)
end

Public Instance Methods

method_missing(symbol, *args) click to toggle source
Calls superclass method
# File lib/stripe2qb/quickbooks_api.rb, line 38
def method_missing(symbol, *args)
  if symbol.to_s =~ /^(.+)_service$/
    get_service($1.camelize)
  else
    super
  end
end
renew_access_token() click to toggle source
# File lib/stripe2qb/quickbooks_api.rb, line 32
def renew_access_token
  result = access_token_service.renew

  { token: result.token, secret: result.secret, created_on: Date.today }
end

Private Instance Methods

find_by_name_or_id(type, key, options, name_attr = :name) click to toggle source
# File lib/stripe2qb/quickbooks_api.rb, line 48
def find_by_name_or_id(type, key, options, name_attr = :name)
  value = get_required_from_options(key, options)
  service = send("#{type}_service")

  unless object = value.is_a?(String) ? service.find_by(name_attr, value).first : service.find_by(:id, value).first
    msg = value.is_a?(String) ? "#{name_attr} '#{value}'" : "ID #{value}"
    raise ConfigurationError.new("no #{type} for #{msg}")
  end

  object
end
get_service(name) click to toggle source
# File lib/stripe2qb/quickbooks_api.rb, line 60
def get_service(name)
  service = "Quickbooks::Service::#{name}".constantize.new
  service.access_token = access_token.oauth
  service.company_id = realm_id

  service
end