Module: AwesomeUsps::AddressVerification

Included in:
USPS
Defined in:
lib/awesome_usps/address_verification.rb

Instance Method Summary collapse

Instance Method Details

#canned_city_state_lookup_testObject



41
42
43
44
45
46
# File 'lib/awesome_usps/address_verification.rb', line 41

def canned_city_state_lookup_test
  locations = [Location.new(:address2 => "6406 Ivy Lane", :city =>"Greenbelt", :state => "MD"), Location.new(:address2=>"8 Wildwood Drive", :city => "Old Lyme",:state => "CT", :zip5 => "06371")]
  api_request = "CityStateLookupRequest"
  request = xml_for_address_information_api(api_request, locations)
  gateway_commit(:zip_lookup, 'CityStateLookup', request, :test)
end

#canned_verify_address_testObject



27
28
29
30
31
32
# File 'lib/awesome_usps/address_verification.rb', line 27

def canned_verify_address_test
  locations = [Location.new(:address2 => "6406 Ivy Lane", :city =>"Greenbelt", :state => "MD"), Location.new(:address2=>"8 Wildwood Drive", :city => "Old Lyme",:state => "CT", :zip5 => "06371"   )]
  api_request = "AddressValidateRequest"
  request = xml_for_address_information_api(api_request, locations)
  gateway_commit(:verify_address, 'Verify', request, :test)
end

#canned_zip_lookup_testObject



34
35
36
37
38
39
# File 'lib/awesome_usps/address_verification.rb', line 34

def canned_zip_lookup_test
  locations = [Location.new(:address2 => "6406 Ivy Lane", :city =>"Greenbelt", :state => "MD"), Location.new(:address2=>"8 Wildwood Drive", :city => "Old Lyme",:state => "CT", :zip5 => "06371"   )]
  api_request = "ZipCodeLookupRequest"
  request = xml_for_address_information_api(api_request, locations)
  gateway_commit(:zip_lookup, 'ZipCodeLookup', request, :test)
end

#city_state_lookup(locations) ⇒ Object



20
21
22
23
24
25
# File 'lib/awesome_usps/address_verification.rb', line 20

def city_state_lookup(locations)
  locations = Array(locations) if not locations.is_a? Array
  api_request = "CityStateLookupRequest"
  request = xml_for_address_information_api(api_request, locations)
  gateway_commit(:zip_lookup, 'CityStateLookup', request, :live)
end

#parse_address_information(xml) ⇒ Object

Parses the XML into an array broken up by each address. For verify_address :verified will be false if multiple address were found.



73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
# File 'lib/awesome_usps/address_verification.rb', line 73

def parse_address_information(xml)
  i = 0
  list_of_verified_addresses = []
  (Hpricot.parse(xml)/:address).each do |address|
    i+=1
    h = {}
    #Check if there was an error in an address element
    if address.search("error") != []
      RAILS_DEFAULT_LOGGER.info("Address number #{i} has the error '#{address.search("description").inner_html}' please fix before continuing")

      return "Address number #{i} has the error '#{address.search("description").inner_html}' please fix before continuing"
    end
    if address.search("ReturnText") != []
      h[:verified] = false
    else
      h[:verified] =true
    end
    address.children.each { |elem| h[elem.name.to_sym] = elem.inner_text unless elem.inner_text.blank? }
    list_of_verified_addresses << h
  end
  #Check if there was an error in the basic XML formating
  if list_of_verified_addresses == []
    error =Hpricot.parse(xml)/:error
    return  error.search("description").inner_html
  end
  return list_of_verified_addresses
end

#veryify_address(locations) ⇒ Object

Examines address and fills in missing information. Address must include city & state or the zip to be processed. Can do up to an array of five



6
7
8
9
10
11
# File 'lib/awesome_usps/address_verification.rb', line 6

def veryify_address(locations)
  locations = Array(locations) if not locations.is_a? Array
  api_request = "AddressValidateRequest"
  request = xml_for_verify_address(api_request, locations)
  gateway_commit(:verify_address, 'Verify', request, :live)
end

#xml_for_address_information_api(api_request, locations) ⇒ Object

XML from Builder::XmlMarkup.new



49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
# File 'lib/awesome_usps/address_verification.rb', line 49

def xml_for_address_information_api(api_request, locations)
  xm = Builder::XmlMarkup.new
  xm.tag!("#{api_request}", "USERID"=>"#{@username}") do
    locations.each_index do |id|
      l=locations[id]
      xm.Address("ID" => "#{id}") do
        xm.FirmName(l.firm_name)
        xm.Address1(l.address1)
        xm.Address2(l.address2)
        if api_request !="CityStateLookupRequest"
          xm.City(l.city)
          xm.State(l.state)
        end
        if api_request != "ZipCodeLookupRequest"
          xm.Zip5(l.zip5)
          xm.Zip4(l.zip4)
        end
      end
    end
  end
end

#zip_lookup(locations) ⇒ Object



13
14
15
16
17
18
# File 'lib/awesome_usps/address_verification.rb', line 13

def zip_lookup(locations)
  locations = Array(locations) if not locations.is_a? Array
  api_request = "ZipCodeLookupRequest"
  request = xml_for_address_information_api(api_request, locations)
  gateway_commit(:zip_lookup, 'ZipCodeLookup',request, :live)
end