Class: AddressVerifier

Inherits:
Object
  • Object
show all
Defined in:
lib/address_verifier.rb,
lib/address_verifier/version.rb

Constant Summary collapse

VERSION =
'0.1.5'

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(usps_user_id = nil, google_api_key = nil) ⇒ AddressVerifier

Returns a new instance of AddressVerifier.



10
11
12
13
# File 'lib/address_verifier.rb', line 10

def initialize(usps_user_id = nil, google_api_key = nil)
  @usps_user_id = usps_user_id
  @google_api_key = google_api_key
end

Instance Attribute Details

#google_api_keyObject

Returns the value of attribute google_api_key.



7
8
9
# File 'lib/address_verifier.rb', line 7

def google_api_key
  @google_api_key
end

#last_usps_responseObject (readonly)

Returns the value of attribute last_usps_response.



8
9
10
# File 'lib/address_verifier.rb', line 8

def last_usps_response
  @last_usps_response
end

#usps_user_idObject

Returns the value of attribute usps_user_id.



6
7
8
# File 'lib/address_verifier.rb', line 6

def usps_user_id
  @usps_user_id
end

Instance Method Details

#get_suggestions(address) ⇒ Object



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

def get_suggestions(address)
  HTTParty.get(suggestions_url(address), timeout: 5)['results'].map do |r|
    r['formatted_address']
  end
end

#state_abbr(state) ⇒ Object



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

def state_abbr(state)
  return nil unless state
  Madison.get_abbrev(state) ||
    Madison.get_abbrev(Madison.get_name(state).to_s)
end

#usps_verification(address) ⇒ Object



27
28
29
30
31
32
33
# File 'lib/address_verifier.rb', line 27

def usps_verification(address)
  request_xml = usps_verification_xml address
  request_url = usps_verification_url request_xml
  res = HTTParty.get request_url, timeout: 5
  @last_usps_response = res['AddressValidateResponse']['Address']
  res
end

#verified?(address) ⇒ Boolean

Returns:

  • (Boolean)


35
36
37
38
39
# File 'lib/address_verifier.rb', line 35

def verified?(address)
  address = address.merge state: state_abbr(address[:state])
  res = usps_verification(address)['AddressValidateResponse']['Address']
  res['ReturnText'].nil? && res['Error'].nil? && !differ?(address, res)
end