Class: FriendlyShipping::Services::Usps::ParseCityStateLookupResponse
- Inherits:
-
Object
- Object
- FriendlyShipping::Services::Usps::ParseCityStateLookupResponse
- Defined in:
- lib/friendly_shipping/services/usps/parse_city_state_lookup_response.rb
Class Method Summary collapse
-
.call(request:, response:) ⇒ Result<FriendlyShipping::AddressValidationResult>
Parse a response from USPS’ city/state lookup API.
Class Method Details
.call(request:, response:) ⇒ Result<FriendlyShipping::AddressValidationResult>
Parse a response from USPS’ city/state lookup API
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
# File 'lib/friendly_shipping/services/usps/parse_city_state_lookup_response.rb', line 13 def call(request:, response:) # Filter out error responses and directly return a failure parsing_result = ParseXMLResponse.call( request: request, response: response, expected_root_tag: 'CityStateLookupResponse' ) parsing_result.fmap do |xml| address = xml.root.at('ZipCode') suggestions = [ Physical::Location.new( city: address&.at('City')&.text, region: address&.at('State')&.text, zip: address&.at('Zip5')&.text, country: 'US' ) ] FriendlyShipping::ApiResult.new( suggestions, original_request: request, original_response: response, ) end end |