From fa8c3f1674254c24fc93bbe2e23e77eaa9f8366a Mon Sep 17 00:00:00 2001 From: rick Date: Sat, 19 Feb 2011 12:27:20 -0800 Subject: [PATCH] only manually call Response#finish for parallel requests --- lib/faraday/adapter/patron.rb | 1 - lib/faraday/adapter/test.rb | 2 +- lib/faraday/adapter/typhoeus.rb | 5 +++-- lib/faraday/error.rb | 2 +- lib/faraday/request.rb | 5 +++-- lib/faraday/response.rb | 1 + 6 files changed, 9 insertions(+), 7 deletions(-) diff --git a/lib/faraday/adapter/patron.rb b/lib/faraday/adapter/patron.rb index c156f0df..7d1ee066 100644 --- a/lib/faraday/adapter/patron.rb +++ b/lib/faraday/adapter/patron.rb @@ -22,7 +22,6 @@ module Faraday :response_headers => resp.headers. inject({}) { |memo, (k, v)| memo.update(k.downcase => v) }, :body => resp.body - env[:response].finish(env) @app.call env rescue Errno::ECONNREFUSED diff --git a/lib/faraday/adapter/test.rb b/lib/faraday/adapter/test.rb index 720f8e50..54370c65 100644 --- a/lib/faraday/adapter/test.rb +++ b/lib/faraday/adapter/test.rb @@ -7,7 +7,7 @@ module Faraday # end # end # end - # + # # resp = test.get '/nigiri/sake.json' # resp.body # => 'hi world' # diff --git a/lib/faraday/adapter/typhoeus.rb b/lib/faraday/adapter/typhoeus.rb index b121977c..69ca6aab 100644 --- a/lib/faraday/adapter/typhoeus.rb +++ b/lib/faraday/adapter/typhoeus.rb @@ -26,18 +26,19 @@ module Faraday req.timeout = req.connect_timeout = (env_req[:timeout] * 1000) if env_req[:timeout] req.connect_timeout = (env_req[:open_timeout] * 1000) if env_req[:open_timeout] + is_parallel = !!env[:parallel_manager] req.on_complete do |resp| env.update \ :status => resp.code, :response_headers => parse_response_headers(resp.headers), :body => resp.body - env[:response].finish(env) + env[:response].finish(env) if !is_parallel end hydra = env[:parallel_manager] || self.class.setup_parallel_manager hydra.queue req - if !env[:parallel_manager] + if !is_parallel hydra.run end diff --git a/lib/faraday/error.rb b/lib/faraday/error.rb index df64683e..6f81f2e3 100644 --- a/lib/faraday/error.rb +++ b/lib/faraday/error.rb @@ -6,7 +6,7 @@ module Faraday end def message - @inner_exception.respond_to?(:message) ? + @inner_exception.respond_to?(:message) ? @inner_exception.message : @inner_exception.to_s end diff --git a/lib/faraday/request.rb b/lib/faraday/request.rb index c25aa532..ae85cd9f 100644 --- a/lib/faraday/request.rb +++ b/lib/faraday/request.rb @@ -3,8 +3,9 @@ module Faraday # # @connection.post do |req| # req.url 'http://localhost', 'a' => '1' # 'http://localhost?a=1' - # req.headers['b'] = '2' # header - # req['b'] = '2' # header + # req.headers['b'] = '2' # Header + # req.params['c'] = '3' # GET Param + # req['b'] = '2' # also Header # req.body = 'abc' # end # diff --git a/lib/faraday/response.rb b/lib/faraday/response.rb index 2f76a2b0..d18dfdd4 100644 --- a/lib/faraday/response.rb +++ b/lib/faraday/response.rb @@ -41,6 +41,7 @@ module Faraday end def finish(env) + return self if @status env[:body] ||= '' @on_complete_callbacks.each { |c| c.call(env) } @status, @headers, @body = env[:status], env[:response_headers], env[:body]