Exception: HiEnergyAi::Error

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

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(message = nil, status: nil, code: nil, request_id: nil, details: nil, response_body: nil) ⇒ Error

Returns a new instance of Error.



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

def initialize(message = nil, status: nil, code: nil, request_id: nil, details: nil, response_body: nil)
  super(message)
  @status = status
  @code = code
  @request_id = request_id
  @details = details
  @response_body = response_body
end

Instance Attribute Details

#codeObject (readonly)

Returns the value of attribute code.



5
6
7
# File 'lib/hi_energy_ai/error.rb', line 5

def code
  @code
end

#detailsObject (readonly)

Returns the value of attribute details.



5
6
7
# File 'lib/hi_energy_ai/error.rb', line 5

def details
  @details
end

#request_idObject (readonly)

Returns the value of attribute request_id.



5
6
7
# File 'lib/hi_energy_ai/error.rb', line 5

def request_id
  @request_id
end

#response_bodyObject (readonly)

Returns the value of attribute response_body.



5
6
7
# File 'lib/hi_energy_ai/error.rb', line 5

def response_body
  @response_body
end

#statusObject (readonly)

Returns the value of attribute status.



5
6
7
# File 'lib/hi_energy_ai/error.rb', line 5

def status
  @status
end

Class Method Details

.from_response(status, body) ⇒ Object



16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/hi_energy_ai/error.rb', line 16

def self.from_response(status, body)
  payload = parse_json(body)
  error = payload.is_a?(Hash) ? payload["error"] || payload[:error] : nil

  if error.is_a?(Hash)
    new(
      error["message"] || error[:message] || "API request failed",
      status: status,
      code: error["code"] || error[:code],
      request_id: error["request_id"] || error[:request_id],
      details: error["details"] || error[:details],
      response_body: body
    )
  else
    new("API request failed with status #{status}", status: status, response_body: body)
  end
end