Sha256: 1230300bbaedb802606996fa7bb72fd1e32522b15d80274ead87f2a22aba798f
Contents?: true
Size: 999 Bytes
Versions: 1
Compression:
Stored size: 999 Bytes
Contents
# frozen_string_literal: true require 'friendly_shipping/api_error' module FriendlyShipping module Services class RL # Raised when an R+L API error is returned. class ApiError < FriendlyShipping::ApiError # @param cause [RestClient::Exception] the cause of the error def initialize(cause) super(cause, parse_message(cause)) end private # Parses the message from the error response. # # @param error [RestClient::Exception] the cause of the error # @return [String, nil] the message or nil if it couldn't be parsed def parse_message(error) return error.message unless error.response && error.http_code == 400 parsed_body = JSON.parse(error.response.body) messages = parsed_body.fetch('Errors')&.map { |e| e.fetch('ErrorMessage') } messages&.join(', ') 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/rl/api_error.rb |