Sha256: 5d0919474dc61612e1d24e4fdfb205d27a25e4f6227cf3435cad3c525d7c8daf
Contents?: true
Size: 1.34 KB
Versions: 2
Compression:
Stored size: 1.34 KB
Contents
# frozen_string_literal: true module FriendlyShipping module Services class TForceFreight # Raised when an API error is returned. class ApiError < FriendlyShipping::ApiError # @param cause [RestClient::Exception] def initialize(cause) super(cause, parse_message(cause)) end private # @param error [RestClient::Exception] # @return [String] def parse_message(error) return error.message unless error.response parsed_json = JSON.parse(error.response.body) if parsed_json['summary'].present? status = parsed_json.dig("summary", "responseStatus", "code") message = parsed_json.dig("summary", "responseStatus", "message").presence || parsed_json.dig("summary", "responseStatus", "description") elsif parsed_json['responseStatus'].present? status = parsed_json.dig("responseStatus", "code") message = parsed_json.dig("responseStatus", "description") else status = parsed_json['statusCode'] message = parsed_json['message'].presence || parsed_json['description'] end [status, message].compact.join(": ") rescue JSON::ParserError, KeyError => _e nil end end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
friendly_shipping-0.10.1 | lib/friendly_shipping/services/tforce_freight/api_error.rb |
friendly_shipping-0.10.0 | lib/friendly_shipping/services/tforce_freight/api_error.rb |