class Taxjar::Client

Attributes

conn[R]

Public Class Methods

new(options={}) click to toggle source
# File lib/taxjar/client.rb, line 11
def initialize(options={})
  options = Taxjar.options.merge(options)

  Configuration::VALID_CONFIG_KEYS.each do |key|
    send("#{key}=", options[key])
  end

  check_configuration
  setup_conn
end

Public Instance Methods

create_order_transaction(options={}) click to toggle source
# File lib/taxjar/client.rb, line 48
def create_order_transaction(options={})
  check_availability(method_api_version: 2, method_api_tier: 'enhanced')
  response = @conn.post api_path('transactions', 'orders'), options
  response.body
end
create_refund_transaction(options={}) click to toggle source
# File lib/taxjar/client.rb, line 66
def create_refund_transaction(options={})
  check_availability(method_api_version: 2, method_api_tier: 'enhanced')
  response = @conn.post api_path('transactions', 'refunds'), options
  response.body
end
delete_order_transaction(options={}) click to toggle source
# File lib/taxjar/client.rb, line 60
def delete_order_transaction(options={})
  check_availability(method_api_version: 2, method_api_tier: 'enhanced')
  response = @conn.delete api_path('transactions', 'orders', options.delete(:transaction_id)), options
  response.body
end
delete_refund_transaction(options={}) click to toggle source
# File lib/taxjar/client.rb, line 78
def delete_refund_transaction(options={})
  check_availability(method_api_version: 2, method_api_tier: 'enhanced')
  response = @conn.delete api_path('transactions', 'refunds', options.delete(:transaction_id)), options
  response.body
end
list_categories() click to toggle source
# File lib/taxjar/client.rb, line 42
def list_categories()
  check_availability(method_api_version: 2, method_api_tier: 'enhanced')
  response = @conn.get api_path('categories')
  response.body
end
sales_tax(options={}) click to toggle source
# File lib/taxjar/client.rb, line 22
def sales_tax(options={})
  case api_version
  when 1
    response = @conn.get api_path('sales_tax'), options
  when 2
    response = @conn.post api_path('taxes'), options
  end
  response.body
end
tax_rate(options={}) click to toggle source
# File lib/taxjar/client.rb, line 32
def tax_rate(options={})
  case api_version
  when 1
    response = @conn.get "/locations/#{options.delete(:zip)}", options
  when 2
    response = @conn.get api_path('rates', options.delete(:zip)), options
  end
  response.body
end
update_order_transaction(options={}) click to toggle source
# File lib/taxjar/client.rb, line 54
def update_order_transaction(options={})
  check_availability(method_api_version: 2, method_api_tier: 'enhanced')
  response = @conn.put api_path('transactions', 'orders', options.delete(:transaction_id)), options
  response.body
end
update_refund_transaction(options={}) click to toggle source
# File lib/taxjar/client.rb, line 72
def update_refund_transaction(options={})
  check_availability(method_api_version: 2, method_api_tier: 'enhanced')
  response = @conn.put api_path('transactions', 'refunds', options.delete(:transaction_id)), options
  response.body
end

Private Instance Methods

api_path(*args) click to toggle source

returns path for TaxJar API endpoint

examples: API v1: /v1/sales_tax API v2: /v2/enhanced/transactions/orders/123

# File lib/taxjar/client.rb, line 124
def api_path(*args)
  "/v#{api_version}/#{args.unshift(api_tier).compact.join('/')}"
end
check_availability(method_api_version: 1, method_api_tier: nil) click to toggle source

checks whether the requested method is available for the current configuration

# File lib/taxjar/client.rb, line 114
def check_availability(method_api_version: 1, method_api_tier: nil)
  raise Taxjar::NotAvailable, "Method not available for API v#{api_version}" if (method_api_version != api_version)
  raise Taxjar::NotAvailable, "Method not available for #{api_tier} API tier" if (method_api_tier != api_tier)
end
check_configuration() click to toggle source

checks correct client configuration

# File lib/taxjar/client.rb, line 104
def check_configuration
  case api_version
  when 1
    raise Taxjar::BadConfiguration, "Configuration error - API v1 does not support API tiers" unless api_tier.nil?
  when 2
    raise Taxjar::BadConfiguration, "Configuration error - API tier #{api_tier} is invalid" unless ['standard','enhanced'].include?(api_tier)
  end
end
setup_conn() click to toggle source
# File lib/taxjar/client.rb, line 86
def setup_conn
  options = {
    :headers => {'Accept' => "application/#{format}; charset=utf-8", 'User-Agent' => user_agent},
    :proxy => proxy,
    :url => endpoint,
  }.merge(connection_options)

  @conn = Faraday::Connection.new(options) do |c|
    c.request :url_encoded
    c.token_auth self.auth_token
    c.use FaradayMiddleware::ParseJson
    c.use FaradayMiddleware::RaiseHttpException
    c.adapter(adapter)
  end

end