Module: ApiBrasil::Core::Transport

Defined in:
lib/api_brasil/core/transport.rb,
lib/api_brasil/core/transport/faraday_transport.rb,
lib/api_brasil/core/transport/net_http_transport.rb

Overview

Camada de transporte HTTP da SDK. A implementacao padrao usa a stdlib (NetHttpTransport), com uso automatico do Faraday quando ele ja esta carregado no processo (FaradayTransport); injete a sua para usar proxies, outro cliente HTTP, mocks de teste etc.

Contrato: retorna a resposta para QUALQUER status HTTP; lanca NetworkError/TimeoutError apenas quando nao houve resposta.

Defined Under Namespace

Classes: Base, FaradayTransport, NetHttpTransport, Request, Response

Constant Summary collapse

RAW_RESPONSE_TYPES =

Tipos de resposta que nao devem ser decodificados como JSON.

%w[raw arraybuffer stream].freeze

Class Method Summary collapse

Class Method Details

.decode_body(request, raw) ⇒ Object?

Decodifica o corpo conforme o response_type pedido.

Parameters:

  • request (Request)
  • raw (String, nil)

Returns:

  • (Object, nil)


95
96
97
98
99
100
101
102
103
104
# File 'lib/api_brasil/core/transport.rb', line 95

def decode_body(request, raw)
  return raw if RAW_RESPONSE_TYPES.include?(request.response_type)
  return nil if raw.nil? || raw.empty?

  begin
    JSON.parse(raw)
  rescue JSON::ParserError
    raw
  end
end

.defaultBase

Transporte padrao: Faraday quando ja carregado, senao net/http.

Returns:



84
85
86
87
88
# File 'lib/api_brasil/core/transport.rb', line 84

def default
  return FaradayTransport.new if defined?(::Faraday)

  NetHttpTransport.new
end