Class: FriendlyShipping::Services::RL::ParseTransitTimesResponse
- Inherits:
-
Object
- Object
- FriendlyShipping::Services::RL::ParseTransitTimesResponse
- Extended by:
- Dry::Monads::Result::Mixin
- Defined in:
- lib/friendly_shipping/services/rl/parse_transit_times_response.rb
Overview
Parses the response from the R+L API when getting transit times.
Class Method Summary collapse
-
.call(request:, response:) ⇒ Success<ApiResult>, Failure<ApiResult>
The parsed timings.
Class Method Details
.call(request:, response:) ⇒ Success<ApiResult>, Failure<ApiResult>
Returns the parsed timings.
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_transit_times_response.rb', line 14 def call(request:, response:) parsed_json = JSON.parse(response.body) timings = build_timings(parsed_json) if timings.any? Success( ApiResult.new( timings, 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 |