lib/my_api_client/errors/network_error.rb
# frozen_string_literal: true
module MyApiClient
NETWORK_ERRORS = [
Faraday::TimeoutError,
Faraday::ConnectionFailed,
Faraday::SSLError,
OpenSSL::SSL::SSLError,
Net::OpenTimeout,
Net::ReadTimeout,
SocketError,
].freeze
# Raises it when occurred to some network error
class NetworkError < Error
attr_reader :original_error
# Initialize the error class
#
# @param params [MyApiClient::Params::Params]
# The request and response parameters
# @param original_error [StandardError]
# Some network error
def initialize(params = nil, original_error = nil)
@original_error = original_error
super(params, original_error&.message)
end
# Returns contents as string for to be readable for human
#
# @return [String] Contents as string
def inspect
{ error: original_error, params: params }.inspect
end
# Generate metadata for bugsnag.
#
# @return [Hash] Metadata for bugsnag
def metadata
super&.merge(original_error: original_error&.inspect)
end
end
end