Exception: ABMeter::APIError
- Inherits:
-
StandardError
- Object
- StandardError
- ABMeter::APIError
- Defined in:
- lib/abmeter/api_error.rb
Instance Attribute Summary collapse
-
#code ⇒ Object
readonly
Returns the value of attribute code.
-
#details ⇒ Object
readonly
Returns the value of attribute details.
-
#status ⇒ Object
readonly
Returns the value of attribute status.
Instance Method Summary collapse
- #failure_count ⇒ Object
-
#initialize(response) ⇒ APIError
constructor
A new instance of APIError.
- #message ⇒ Object
- #partial_failure? ⇒ Boolean
- #retryable? ⇒ Boolean
- #to_h ⇒ Object
Constructor Details
#initialize(response) ⇒ APIError
Returns a new instance of APIError.
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
# File 'lib/abmeter/api_error.rb', line 7 def initialize(response) @status = response.status error_body = response.body if error_body.is_a?(Hash) body = error_body.with_indifferent_access @error_message = body[:error] || 'Unknown error' @code = body[:code] @details = body[:details] || {} else @error_message = error_body.to_s @code = nil @details = {} end super(@error_message) end |
Instance Attribute Details
#code ⇒ Object (readonly)
Returns the value of attribute code.
5 6 7 |
# File 'lib/abmeter/api_error.rb', line 5 def code @code end |
#details ⇒ Object (readonly)
Returns the value of attribute details.
5 6 7 |
# File 'lib/abmeter/api_error.rb', line 5 def details @details end |
#status ⇒ Object (readonly)
Returns the value of attribute status.
5 6 7 |
# File 'lib/abmeter/api_error.rb', line 5 def status @status end |
Instance Method Details
#failure_count ⇒ Object
46 47 48 |
# File 'lib/abmeter/api_error.rb', line 46 def failure_count @details&.dig(:invalid_count) || 0 end |
#message ⇒ Object
25 26 27 |
# File 'lib/abmeter/api_error.rb', line 25 def @error_message end |
#partial_failure? ⇒ Boolean
42 43 44 |
# File 'lib/abmeter/api_error.rb', line 42 def partial_failure? @status == 400 && @details.is_a?(Hash) && !@details[:failures].nil? && !@details[:failures].empty? end |
#retryable? ⇒ Boolean
38 39 40 |
# File 'lib/abmeter/api_error.rb', line 38 def retryable? @status >= 500 || @status == 408 || @status == 429 end |
#to_h ⇒ Object
29 30 31 32 33 34 35 36 |
# File 'lib/abmeter/api_error.rb', line 29 def to_h { error: @error_message, code: @code, details: @details, status: @status }.compact end |