module DialAZip
Constants
- DIAL_A_ZIP_ADDRESS_NOT_FOUND_MESSAGE
- DIAL_A_ZIP_BASE_URL
- DIAL_A_ZIP_RESPONSE_MESSAGES
Attributes
dial_a_zip_password[RW]
dial_a_zip_user[RW]
Public Instance Methods
verify_address(address)
click to toggle source
# File lib/dial_a_zip.rb, line 20 def verify_address(address) xml = %! <VERIFYADDRESS> <COMMAND>ZIP1</COMMAND> <SERIALNO>#{dial_a_zip_user}</SERIALNO> <USER>#{dial_a_zip_user}</USER> <PASSWORD>#{dial_a_zip_password}</PASSWORD> <ADDRESS0></ADDRESS0> <ADDRESS1>#{address[:full_name]}</ADDRESS1> <ADDRESS2>#{address[:address]}</ADDRESS2> <ADDRESS3>#{address[:city]}, #{address[:state]} #{address[:zipcode]}</ADDRESS3> </VERIFYADDRESS>! begin response = RestClient.post "#{DIAL_A_ZIP_BASE_URL}/MethodZIPValidate", :input => xml response_xml = Nokogiri::XML(response.body) return_code_node_xml = response_xml.css('Dial-A-ZIP_Response ReturnCode').first return_code = return_code_node_xml ? return_code_node_xml.text : nil addr_exists_node_xml = response_xml.css('Dial-A-ZIP_Response AddrExists').first addr_exists = addr_exists_node_xml ? addr_exists_node_xml.text : nil if ['31', '32'].include?(return_code) && addr_exists == 'TRUE' return { :full_name => response_xml.css('Dial-A-ZIP_Response AddrLine2').first.text, :address => response_xml.css('Dial-A-ZIP_Response AddrLine1').first.text, :city => response_xml.css('Dial-A-ZIP_Response City').first.text, :state => response_xml.css('Dial-A-ZIP_Response State').first.text, :zipcode => [response_xml.css('Dial-A-ZIP_Response ZIP5').first.text, response_xml.css('Dial-A-ZIP_Response Plus4').first.text].join('-'), } else fail return_code == '31' ? DIAL_A_ZIP_ADDRESS_NOT_FOUND_MESSAGE : DIAL_A_ZIP_RESPONSE_MESSAGES[return_code] end rescue => e fail e.to_s end end