Class: ApiBrasil::Core::Transport::FaradayTransport
- Defined in:
- lib/api_brasil/core/transport/faraday_transport.rb
Overview
Class Method Summary collapse
-
.available? ⇒ Boolean
truequando o Faraday esta disponivel.
Instance Method Summary collapse
-
#initialize(connection = nil) ⇒ FaradayTransport
constructor
A new instance of FaradayTransport.
- #request(request) ⇒ Response
Constructor Details
#initialize(connection = nil) ⇒ FaradayTransport
Returns a new instance of FaradayTransport.
18 19 20 21 22 23 24 25 26 27 |
# File 'lib/api_brasil/core/transport/faraday_transport.rb', line 18 def initialize(connection = nil) super() unless self.class.available? raise Errors::NetworkError, "Faraday nao esta carregado. Adicione `require \"faraday\"` ou " \ "use ApiBrasil::Core::Transport::NetHttpTransport." end @connection = connection || ::Faraday.new end |
Class Method Details
.available? ⇒ Boolean
Returns true quando o Faraday esta disponivel.
13 14 15 |
# File 'lib/api_brasil/core/transport/faraday_transport.rb', line 13 def self.available? defined?(::Faraday) ? true : false end |
Instance Method Details
#request(request) ⇒ Response
31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
# File 'lib/api_brasil/core/transport/faraday_transport.rb', line 31 def request(request) response = @connection.run_request( request.method.downcase.to_sym, request.url, request.body, request.headers ) do |req| apply_timeout(req, request.timeout_ms) end Response.new( response.status, normalize_headers(response.headers), Transport.decode_body(request, response.body) ) rescue ::Faraday::TimeoutError => e raise Errors::TimeoutError.new( "Tempo limite de #{request.timeout_ms.to_i}ms excedido em #{request.method} #{request.url}.", previous: e ) rescue ::Faraday::Error => e raise Errors::NetworkError.new( "Falha de rede em #{request.method} #{request.url}: #{e.}", previous: e ) end |