Exception: Wave::Error

Inherits:
StandardError
  • Object
show all
Defined in:
lib/wave/errors.rb

Overview

Canonical WAVE API error. The gateway emits a nested envelope “error”:{“code”,“message”}; code/message are lifted from it.

Direct Known Subclasses

RateLimitError

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

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

Returns a new instance of Error.



9
10
11
12
13
14
15
16
# File 'lib/wave/errors.rb', line 9

def initialize(message, code:, status_code:, request_id: nil, details: nil)
  super(message)
  @code = code
  @status_code = status_code
  @request_id = request_id
  @details = details
  @retryable = self.class.retryable?(status_code, code)
end

Instance Attribute Details

#codeObject (readonly)

Returns the value of attribute code.



7
8
9
# File 'lib/wave/errors.rb', line 7

def code
  @code
end

#detailsObject (readonly)

Returns the value of attribute details.



7
8
9
# File 'lib/wave/errors.rb', line 7

def details
  @details
end

#request_idObject (readonly)

Returns the value of attribute request_id.



7
8
9
# File 'lib/wave/errors.rb', line 7

def request_id
  @request_id
end

#retryableObject (readonly)

Returns the value of attribute retryable.



7
8
9
# File 'lib/wave/errors.rb', line 7

def retryable
  @retryable
end

#status_codeObject (readonly)

Returns the value of attribute status_code.



7
8
9
# File 'lib/wave/errors.rb', line 7

def status_code
  @status_code
end

Class Method Details

.retryable?(status_code, code) ⇒ Boolean

Returns:

  • (Boolean)


18
19
20
21
22
23
# File 'lib/wave/errors.rb', line 18

def self.retryable?(status_code, code)
  return true if status_code == 429
  return true if status_code >= 500 && status_code < 600

  %w[TIMEOUT NETWORK_ERROR SERVICE_UNAVAILABLE].include?(code)
end