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