Module: ZipTax

Defined in:
lib/zip_tax.rb,
lib/zip_tax/version.rb

Constant Summary collapse

VERSION =
"1.0.0"
@@host =
'api.zip-tax.com'

Class Method Summary collapse

Class Method Details

.info(zip) ⇒ Object



32
33
34
35
# File 'lib/zip_tax.rb', line 32

def self.info(zip)
  response = request(zip)
  return response['results'][0]
end

.keyObject



13
14
15
# File 'lib/zip_tax.rb', line 13

def self.key
  @@key
end

.key=(key) ⇒ Object



9
10
11
# File 'lib/zip_tax.rb', line 9

def self.key=(key)
  @@key = key
end

.rate(zip, state = nil) ⇒ Object



27
28
29
30
# File 'lib/zip_tax.rb', line 27

def self.rate(zip, state = nil)
  response = request(zip)
  state.nil? || state.upcase == response['results'][0]['geoState'] ? response['results'][0]['taxSales'] : 0.0
end

.request(zip) ⇒ Object

Raises:

  • (ArgumentError)


17
18
19
20
21
22
23
24
25
# File 'lib/zip_tax.rb', line 17

def self.request(zip)
  key = @@key
  host = @@host
  raise ArgumentError, "Zip-Tax API key must be set using ZipTax.key=" if key.nil?
  path = "/request/v20?key=#{key}&postalcode=#{zip}"
  response = JSON.parse(Net::HTTP.get(host, path))
  raise StandardError, "Zip-Tax returned an empty response using the zip code #{zip}" if response["results"].empty?
  return response
end