Class: FriendlyShipping::Services::RL::ParsePrintBOLResponse
- Inherits:
-
Object
- Object
- FriendlyShipping::Services::RL::ParsePrintBOLResponse
- Extended by:
- Dry::Monads::Result::Mixin
- Defined in:
- lib/friendly_shipping/services/rl/parse_print_bol_response.rb
Overview
Parses the response from the R+L API when printing a Bill of Lading (BOL).
Class Method Summary collapse
-
.call(request:, response:) ⇒ Result<ApiResult<ShipmentDocument>>
Shipment document containing the BOL.
Class Method Details
.call(request:, response:) ⇒ Result<ApiResult<ShipmentDocument>>
Returns shipment document containing the BOL.
14 15 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/rl/parse_print_bol_response.rb', line 14 def call(request:, response:) parsed_json = JSON.parse(response.body) bol_document = ShipmentDocument.new( format: :pdf, document_type: :rl_bol, binary: Base64.decode64(parsed_json['BolDocument']) ) if bol_document.valid? Success( ApiResult.new( bol_document, 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 |