Exception: FocusNfe::Errors::HttpError

Inherits:
FocusNfe::Error show all
Defined in:
lib/focus_nfe/errors.rb

Overview

Falha HTTP retornada pela API, carregando o status, o corpo parseado com as mensagens de erro da API e a HTTP::Response original.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(message = nil, status: nil, body: nil, response: nil) ⇒ HttpError

Returns a new instance of HttpError.

Parameters:

  • message (String, nil) (defaults to: nil)

    mensagem da exceção

  • status (Integer, nil) (defaults to: nil)

    código de status HTTP

  • body (Object, nil) (defaults to: nil)

    corpo parseado da resposta

  • response (FocusNfe::HTTP::Response, nil) (defaults to: nil)

    resposta original



28
29
30
31
32
33
# File 'lib/focus_nfe/errors.rb', line 28

def initialize(message = nil, status: nil, body: nil, response: nil)
  @status = status
  @body = body
  @response = response
  super(message)
end

Instance Attribute Details

#bodyObject? (readonly)

Returns corpo parseado com as mensagens de erro da API.

Returns:

  • (Object, nil)

    corpo parseado com as mensagens de erro da API



19
20
21
# File 'lib/focus_nfe/errors.rb', line 19

def body
  @body
end

#responseFocusNfe::HTTP::Response? (readonly)

Returns resposta original que originou o erro.

Returns:



22
23
24
# File 'lib/focus_nfe/errors.rb', line 22

def response
  @response
end

#statusInteger? (readonly)

Returns código de status HTTP da resposta.

Returns:

  • (Integer, nil)

    código de status HTTP da resposta



16
17
18
# File 'lib/focus_nfe/errors.rb', line 16

def status
  @status
end

Instance Method Details

#codigoString?

Returns código de erro da API, quando o corpo é estruturado.

Returns:

  • (String, nil)

    código de erro da API, quando o corpo é estruturado



36
37
38
# File 'lib/focus_nfe/errors.rb', line 36

def codigo
  body["codigo"] if body.is_a?(Hash)
end

#errosArray<Hash>

Returns erros no formato { "campo" => String?, "mensagem" => String }; vazio quando o corpo não traz erros estruturados.

Returns:

  • (Array<Hash>)

    erros no formato { "campo" => String?, "mensagem" => String }; vazio quando o corpo não traz erros estruturados



42
43
44
45
46
47
# File 'lib/focus_nfe/errors.rb', line 42

def erros
  return [] unless body.is_a?(Hash)
  return body["erros"] if body["erros"].is_a?(Array)

  body["mensagem"] ? [{ "campo" => nil, "mensagem" => body["mensagem"] }] : []
end