Class: FriendlyShipping::Services::RL::ParseRateQuoteResponse
- Inherits:
-
Object
- Object
- FriendlyShipping::Services::RL::ParseRateQuoteResponse
- Extended by:
- Dry::Monads::Result::Mixin
- Defined in:
- lib/friendly_shipping/services/rl/parse_rate_quote_response.rb
Overview
Parses the response from the R+L API when getting rate quotes.
Class Method Summary collapse
-
.call(request:, response:) ⇒ Success<ApiResult>, Failure<ApiResult>
The parsed rates.
Class Method Details
.call(request:, response:) ⇒ Success<ApiResult>, Failure<ApiResult>
Returns the parsed rates.
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
# File 'lib/friendly_shipping/services/rl/parse_rate_quote_response.rb', line 14 def call(request:, response:) parsed_json = JSON.parse(response.body) rates = build_rates(parsed_json) if rates.any? Success( ApiResult.new( rates, original_request: request, original_response: response ) ) else errors = parsed_json.fetch('Errors', [{ 'ErrorMessage' => 'Unknown error' }]) Failure( ApiResult.new( errors.map { |e| e['ErrorMessage'] }, original_request: request, original_response: response ) ) end end |