Class: FriendlyShipping::Services::USPSShip::ParseCityStateResponse
- Inherits:
-
Object
- Object
- FriendlyShipping::Services::USPSShip::ParseCityStateResponse
- Extended by:
- Dry::Monads::Result::Mixin
- Defined in:
- lib/friendly_shipping/services/usps_ship/parse_city_state_response.rb
Constant Summary collapse
- USA =
Carmen::Country.coded("USA")
Class Method Summary collapse
-
.call(request:, response:) ⇒ Success<ApiResult<Physical::Location>>, Failure<ApiResult<String>>
Parse a city/state response.
- .failure(error, request, response) ⇒ Failure<ApiResult>
- .success(location, request, response) ⇒ Success<ApiResult<Physical::Location>>
Class Method Details
.call(request:, response:) ⇒ Success<ApiResult<Physical::Location>>, Failure<ApiResult<String>>
Parse a city/state response.
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
# File 'lib/friendly_shipping/services/usps_ship/parse_city_state_response.rb', line 16 def call(request:, response:) city_state = JSON.parse(response.body) if city_state['error'] failure( api_error("Error: #{city_state.dig('error', 'message')}"), request, response ) else success( Physical::Location.new( city: city_state['city'], region: city_state['state'], zip: city_state['ZIPCode'], country: USA ), request, response ) end rescue JSON::ParserError => e failure(e, request, response) end |
.failure(error, request, response) ⇒ Failure<ApiResult>
59 60 61 62 63 64 65 66 67 |
# File 'lib/friendly_shipping/services/usps_ship/parse_city_state_response.rb', line 59 def failure(error, request, response) Failure( ApiResult.new( error, original_request: request, original_response: response ) ) end |
.success(location, request, response) ⇒ Success<ApiResult<Physical::Location>>
45 46 47 48 49 50 51 52 53 |
# File 'lib/friendly_shipping/services/usps_ship/parse_city_state_response.rb', line 45 def success(location, request, response) Success( ApiResult.new( location, original_request: request, original_response: response ) ) end |