Class: Faraday::Adapter::Patron

Inherits:
Faraday::Adapter show all
Defined in:
lib/faraday/adapter/patron.rb

Constant Summary

Constants inherited from Faraday::Adapter

CONTENT_LENGTH

Instance Method Summary collapse

Methods inherited from Faraday::Adapter

#response_headers

Methods included from Faraday::AutoloadHelper

#all_loaded_constants, #autoload_all, #load_autoloaded_constants, #lookup_module, #register_lookup_modules

Methods inherited from Middleware

dependency, #initialize, loaded?, setup_parallel_manager

Constructor Details

This class inherits a constructor from Faraday::Middleware

Instance Method Details

#call(env) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/faraday/adapter/patron.rb', line 6

def call(env)
  super

  # TODO: support streaming requests
  env[:body] = env[:body].read if env[:body].respond_to? :read

  session = ::Patron::Session.new

  response = begin
    if Connection::METHODS_WITH_BODIES.include? env[:method]
      session.send(env[:method], env[:url].to_s, env[:body].to_s, env[:request_headers])
    else
      session.send(env[:method], env[:url].to_s, env[:request_headers])
    end
  rescue Errno::ECONNREFUSED
    raise Error::ConnectionFailed, $!
  end

  env.update :status => response.status, :body => response.body
  response_headers(env).update response.headers

  @app.call env
end