Module: AwesomeUsps::AddressVerification
- Included in:
- USPS
- Defined in:
- lib/awesome_usps/address_verification.rb
Instance Method Summary collapse
- #canned_city_state_lookup_test ⇒ Object
- #canned_verify_address_test ⇒ Object
- #canned_zip_lookup_test ⇒ Object
- #city_state_lookup(locations) ⇒ Object
-
#parse_address_information(xml) ⇒ Object
Parses the XML into an array broken up by each address.
-
#veryify_address(locations) ⇒ Object
Examines address and fills in missing information.
-
#xml_for_address_information_api(api_request, locations) ⇒ Object
XML from Builder::XmlMarkup.new.
- #zip_lookup(locations) ⇒ Object
Instance Method Details
#canned_city_state_lookup_test ⇒ Object
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_test ⇒ Object
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_test ⇒ Object
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 |