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

#save_response

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
# 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
    data = Connection::METHODS_WITH_BODIES.include?(env[:method]) ? env[:body].to_s : nil
    session.request(env[:method], env[:url].to_s, env[:request_headers], :data => data)
  rescue Errno::ECONNREFUSED
    raise Error::ConnectionFailed, $!
  end

  save_response(env, response.status, response.body, response.headers)

  @app.call env
end