class SuperGood::SolidusTaxjar::Addresses

Attributes

api[R]

Public Class Methods

new(api: ::SuperGood::SolidusTaxjar.api) click to toggle source
# File lib/super_good/solidus_taxjar/addresses.rb, line 14
def initialize(api: ::SuperGood::SolidusTaxjar.api)
  @api = api
end
normalize(spree_address) click to toggle source
# File lib/super_good/solidus_taxjar/addresses.rb, line 5
def normalize(spree_address)
  new.normalize(spree_address)
end
possibilities(spree_address) click to toggle source
# File lib/super_good/solidus_taxjar/addresses.rb, line 9
def possibilities(spree_address)
  new.possibilities(spree_address)
end

Public Instance Methods

normalize(spree_address) click to toggle source
# File lib/super_good/solidus_taxjar/addresses.rb, line 18
def normalize(spree_address)
  taxjar_address = taxjar_addresses(spree_address).first

  return if taxjar_address.nil?

  ::Spree::Address.immutable_merge(spree_address, {
    country: us, # TaxJar only supports the US currently.
    state: state(taxjar_address.state),
    zipcode: taxjar_address.zip,
    city: taxjar_address.city,
    address1: taxjar_address.street
  })
end
possibilities(spree_address) click to toggle source
# File lib/super_good/solidus_taxjar/addresses.rb, line 32
def possibilities(spree_address)
  taxjar_addresses(spree_address).map { |taxjar_address|
    ::Spree::Address.immutable_merge(spree_address, {
      country: us, # TaxJar only supports the US currently.
      state: state(taxjar_address.state),
      zipcode: taxjar_address.zip,
      city: taxjar_address.city,
      address1: taxjar_address.street
    })
  }
end

Private Instance Methods

state(abbr) click to toggle source
# File lib/super_good/solidus_taxjar/addresses.rb, line 58
def state(abbr)
  us.states.find_by_abbr abbr
end
taxjar_addresses(spree_address) click to toggle source
# File lib/super_good/solidus_taxjar/addresses.rb, line 48
def taxjar_addresses(spree_address)
  api.validate_spree_address(spree_address)
rescue Taxjar::Error::NotFound
  []
end
us() click to toggle source
# File lib/super_good/solidus_taxjar/addresses.rb, line 54
def us
  ::Spree::Country.find_by iso: "US"
end