Exception: Astroapi::Error

Inherits:
StandardError
  • Object
show all
Defined in:
lib/astroapi/error.rb

Overview

Base error class for all Astroapi errors

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(message, status_code: nil, code: nil, details: nil, response: nil) ⇒ Error

Returns a new instance of Error.



8
9
10
11
12
13
14
# File 'lib/astroapi/error.rb', line 8

def initialize(message, status_code: nil, code: nil, details: nil, response: nil)
  super(message)
  @status_code = status_code
  @code = code
  @details = details
  @response = response
end

Instance Attribute Details

#codeObject (readonly)

Returns the value of attribute code.



6
7
8
# File 'lib/astroapi/error.rb', line 6

def code
  @code
end

#detailsObject (readonly)

Returns the value of attribute details.



6
7
8
# File 'lib/astroapi/error.rb', line 6

def details
  @details
end

#responseObject (readonly)

Returns the value of attribute response.



6
7
8
# File 'lib/astroapi/error.rb', line 6

def response
  @response
end

#status_codeObject (readonly)

Returns the value of attribute status_code.



6
7
8
# File 'lib/astroapi/error.rb', line 6

def status_code
  @status_code
end

Class Method Details

.from_faraday_error(error) ⇒ Astroapi::Error

Convert a Faraday error to an Astroapi error

Parameters:

  • error (Faraday::Error)

    The Faraday error

Returns:



35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
# File 'lib/astroapi/error.rb', line 35

def self.from_faraday_error(error)
  case error
  when Faraday::TimeoutError
    TimeoutError.new(error.message, details: error)
  when Faraday::ConnectionFailed
    ConnectionError.new(error.message, details: error)
  when Faraday::ServerError
    status = error.response&.dig(:status)
    body = error.response&.dig(:body)
    ServerError.new(error.message, status_code: status, response: body, details: error)
  when Faraday::ClientError
    status = error.response&.dig(:status)
    body = error.response&.dig(:body)
    ClientError.new(error.message, status_code: status, response: body, details: error)
  else
    status = error.respond_to?(:response) ? error.response&.dig(:status) : nil
    body = error.respond_to?(:response) ? error.response&.dig(:body) : nil
    new(error.message, status_code: status, response: body, details: error)
  end
end

Instance Method Details

#client_error?Boolean

Check if error is a client error (4xx)

Returns:

  • (Boolean)


18
19
20
21
22
# File 'lib/astroapi/error.rb', line 18

def client_error?
  return false unless status_code

  status_code >= 400 && status_code < 500
end

#server_error?Boolean

Check if error is a server error (5xx)

Returns:

  • (Boolean)


26
27
28
29
30
# File 'lib/astroapi/error.rb', line 26

def server_error?
  return false unless status_code

  status_code >= 500 && status_code < 600
end