Module: Avalara

Defined in:
lib/avalara.rb,
lib/avalara/api.rb,
lib/avalara/types.rb,
lib/avalara/errors.rb,
lib/avalara/parser.rb,
lib/avalara/request.rb,
lib/avalara/version.rb,
lib/avalara/response.rb,
lib/avalara/types/date.rb,
lib/avalara/types/stash.rb,
lib/avalara/request/line.rb,
lib/avalara/response/tax.rb,
lib/avalara/request/address.rb,
lib/avalara/request/invoice.rb,
lib/avalara/response/address.rb,
lib/avalara/response/invoice.rb,
lib/avalara/response/message.rb,
lib/avalara/response/tax_line.rb,
lib/avalara/response/tax_detail.rb,
lib/avalara/request/detail_level.rb,
lib/avalara/response/tax_address.rb,
lib/avalara/response/address_line.rb

Defined Under Namespace

Modules: Request, Response, Types Classes: API, ApiError, Configuration, Parser

Constant Summary collapse

Error =
Class.new(StandardError)
TimeoutError =
Class.new(Error)
NotImplementedError =
Class.new(Error)
VERSION =
'0.2.0'

Class Method Summary collapse

Class Method Details

.configuration {|@@_configuration| ... } ⇒ Object

Yields:

  • (@@_configuration)


15
16
17
18
19
# File 'lib/avalara.rb', line 15

def self.configuration
  @@_configuration ||= Avalara::Configuration.new
  yield @@_configuration if block_given?
  @@_configuration
end

.configuration=(configuration) ⇒ Object

Raises:

  • (ArgumentError)


21
22
23
24
# File 'lib/avalara.rb', line 21

def self.configuration=(configuration)
  raise ArgumentError, 'Expected a Avalara::Configuration instance' unless configuration.kind_of?(Configuration)
  @@_configuration = configuration
end

.configure(&block) ⇒ Object



26
27
28
# File 'lib/avalara.rb', line 26

def self.configure(&block)
  configuration(&block)
end

.endpointObject



54
55
56
# File 'lib/avalara.rb', line 54

def self.endpoint
  configuration.endpoint
end

.endpoint=(endpoint) ⇒ Object



57
58
59
# File 'lib/avalara.rb', line 57

def self.endpoint=(endpoint)
  configuration.endpoint = endpoint
end

.geographical_tax(latitude, longitude, sales_amount) ⇒ Object



82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
# File 'lib/avalara.rb', line 82

def self.geographical_tax(latitude, longitude, sales_amount)
  uri = [
    configuration.endpoint,
    configuration.version,
    "tax",
    "#{latitude},#{longitude}",
    "get"
  ].join("/")

  response = API.get(
    uri,
    {
      :headers    => API.headers_for('0'),
      :query      => {:saleamount => sales_amount},
      :basic_auth => authentication
    }.merge!(net_settings)
  )

  Avalara::Response::Tax.new(response)
rescue Timeout::Error
  puts "Timed out"
  raise TimeoutError
end

.get_tax(invoice) ⇒ Object



106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
# File 'lib/avalara.rb', line 106

def self.get_tax(invoice)
  uri = [endpoint, version, 'tax', 'get'].join('/')

  response = API.post(
    uri,
    {
      :body => invoice.to_json,
      :headers => API.headers_for(invoice.to_json.length),
      :basic_auth => authentication
    }.merge!(net_settings)
  )

  case response.code
  when 200..299
    Response::Invoice.new(response)
  when 400..599
    raise ApiError.new(Response::Invoice.new(response))
  else
    raise ApiError.new(response)
  end
rescue Timeout::Error => e
  raise TimeoutError.new(e)
rescue ApiError => e
  raise e
rescue Exception => e
  raise Error.new(e)
end

.open_timeoutObject



46
47
48
# File 'lib/avalara.rb', line 46

def self.open_timeout
  configuration.open_timeout
end

.open_timeout=(open_timeout) ⇒ Object



50
51
52
# File 'lib/avalara.rb', line 50

def self.open_timeout=(open_timeout)
  configuration.open_timeout = open_timeout
end

.passwordObject



68
69
70
# File 'lib/avalara.rb', line 68

def self.password
  configuration.password
end

.password=(password) ⇒ Object



71
72
73
# File 'lib/avalara.rb', line 71

def self.password=(password)
  configuration.password = password
end

.read_timeoutObject



38
39
40
# File 'lib/avalara.rb', line 38

def self.read_timeout
  configuration.read_timeout
end

.read_timeout=(read_timeout) ⇒ Object



42
43
44
# File 'lib/avalara.rb', line 42

def self.read_timeout=(read_timeout)
  configuration.read_timeout = read_timeout
end

.timeoutObject



30
31
32
# File 'lib/avalara.rb', line 30

def self.timeout
  configuration.timeout
end

.timeout=(timeout) ⇒ Object



34
35
36
# File 'lib/avalara.rb', line 34

def self.timeout=(timeout)
  configuration.timeout = timeout
end

.usernameObject



61
62
63
# File 'lib/avalara.rb', line 61

def self.username
  configuration.username
end

.username=(username) ⇒ Object



64
65
66
# File 'lib/avalara.rb', line 64

def self.username=(username)
  configuration.username = username
end

.validate_address(address_hash) ⇒ Object



134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
# File 'lib/avalara.rb', line 134

def self.validate_address(address_hash)
  uri = [endpoint, version, "address", "validate"].join("/")
  response = API.get(
    uri,
    {
      query: address_hash,
      headers: API.headers_for('0'),
      basic_auth: authentication
    }.merge!(net_settings)
  )
  case response.code
  when 200..299
    Response::Address.new(response)
  when 400..599
    fail ApiError.new(Response::Address.new(response))
  else
    fail ApiError.new(response)
  end
rescue Timeout::Error => e
  raise TimeoutError.new(e)
end

.versionObject



75
76
77
# File 'lib/avalara.rb', line 75

def self.version
  configuration.version
end

.version=(version) ⇒ Object



78
79
80
# File 'lib/avalara.rb', line 78

def self.version=(version)
  configuration.version = version
end