Exception: ABMeter::APIError

Inherits:
StandardError
  • Object
show all
Defined in:
lib/abmeter/api_error.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

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

#codeObject (readonly)

Returns the value of attribute code.



5
6
7
# File 'lib/abmeter/api_error.rb', line 5

def code
  @code
end

#detailsObject (readonly)

Returns the value of attribute details.



5
6
7
# File 'lib/abmeter/api_error.rb', line 5

def details
  @details
end

#statusObject (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_countObject



46
47
48
# File 'lib/abmeter/api_error.rb', line 46

def failure_count
  @details&.dig(:invalid_count) || 0
end

#messageObject



25
26
27
# File 'lib/abmeter/api_error.rb', line 25

def message
  @error_message
end

#partial_failure?Boolean

Returns:

  • (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

Returns:

  • (Boolean)


38
39
40
# File 'lib/abmeter/api_error.rb', line 38

def retryable?
  @status >= 500 || @status == 408 || @status == 429
end

#to_hObject



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