Class: FocusNfe::HTTP::Adapters::NetHttp

Inherits:
FocusNfe::HTTP::Adapter show all
Defined in:
lib/focus_nfe/http/adapters/net_http.rb

Overview

Adaptador HTTP padrão, implementado sobre a stdlib (+Net::HTTP+), sem dependências externas. Aplica os timeouts recebidos no construtor, usa TLS para URLs https, segue redirecionamentos 302 de download apenas para destinos https (sem reenviar Authorization) e relança falhas de transporte como Errors::ConnectionError.

Constant Summary collapse

MAX_REDIRECTS =

Returns número máximo de redirecionamentos 302 seguidos.

Returns:

  • (Integer)

    número máximo de redirecionamentos 302 seguidos

5
VERBS =

Returns verbo => classe de requisição Net::HTTP.

Returns:

  • (Hash{Symbol=>Class})

    verbo => classe de requisição Net::HTTP

{
  get: Net::HTTP::Get,
  post: Net::HTTP::Post,
  put: Net::HTTP::Put,
  delete: Net::HTTP::Delete
}.freeze

Instance Method Summary collapse

Constructor Details

#initialize(timeout: nil, open_timeout: nil) ⇒ NetHttp

Returns a new instance of NetHttp.

Parameters:

  • timeout (Integer) (defaults to: nil)

    timeout de leitura, em segundos

  • open_timeout (Integer) (defaults to: nil)

    timeout de conexão, em segundos



29
30
31
32
33
# File 'lib/focus_nfe/http/adapters/net_http.rb', line 29

def initialize(timeout: nil, open_timeout: nil)
  super()
  @timeout = timeout
  @open_timeout = open_timeout
end

Instance Method Details

#call(method, url, headers: {}, body: nil) ⇒ FocusNfe::HTTP::Response

Parameters:

  • method (Symbol)

    verbo HTTP (:get, :post, :put, :delete)

  • url (String)

    URL absoluta da requisição

  • headers (Hash{String=>String}) (defaults to: {})

    cabeçalhos da requisição

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

    corpo já serializado, ou nil

Returns:

Raises:



41
42
43
# File 'lib/focus_nfe/http/adapters/net_http.rb', line 41

def call(method, url, headers: {}, body: nil)
  dispatch(method, URI(url), headers, body, MAX_REDIRECTS)
end