Sha256: ffc04b276739157e8a1d37f18f5879d51d9ff85c2fdd3dd1ecd31ad9f4577d99
Contents?: true
Size: 1.19 KB
Versions: 1
Compression:
Stored size: 1.19 KB
Contents
# frozen_string_literal: true require 'friendly_shipping/api_error' module FriendlyShipping module Services class UpsFreight class ApiError < FriendlyShipping::ApiError # @param [RestClient::Exception] cause def initialize(cause) super(cause, parse_message(cause)) end private # @param [RestClient::Exception] error # @return [String] def parse_message(error) return error.message unless error.response parsed_json = JSON.parse(error.response.body) if parsed_json['httpCode'].present? status = [parsed_json['httpCode'], parsed_json['httpMessage']].compact.join(" ") desc = parsed_json['moreInformation'] [status, desc].compact.join(": ") else errors = parsed_json.dig('response', 'errors') || [] errors.map do |err| status = err['code'] desc = err['message'] [status, desc].compact.join(": ").presence || "UPS Freight could not process the request." end.join("\n") end rescue JSON::ParserError, KeyError => _e nil end end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
friendly_shipping-0.9.0 | lib/friendly_shipping/services/ups_freight/api_error.rb |