diff --git a/lib/faraday/adapter/excon.rb b/lib/faraday/adapter/excon.rb index b0ea0d7d..0c1ef2af 100644 --- a/lib/faraday/adapter/excon.rb +++ b/lib/faraday/adapter/excon.rb @@ -6,15 +6,19 @@ module Faraday class Excon < Faraday::Adapter dependency 'excon' + def build_connection(env) + opts = opts_from_env(env) + ::Excon.new(env[:url].to_s, opts.merge(@connection_options)) + end + def call(env) super - opts = opts_from_env(env) - conn = create_connection(env, opts) - - resp = conn.request(method: env[:method].to_s.upcase, - headers: env[:request_headers], - body: read_body(env)) + resp = connection(env) do |http| + http.request(method: env[:method].to_s.upcase, + headers: env[:request_headers], + body: read_body(env)) + end req = env[:request] if req&.stream_response? @@ -36,11 +40,6 @@ module Faraday raise Faraday::TimeoutError, e end - # @return [Excon] - def create_connection(env, opts) - ::Excon.new(env[:url].to_s, opts.merge(@connection_options)) - end - # TODO: support streaming requests def read_body(env) env[:body].respond_to?(:read) ? env[:body].read : env[:body] diff --git a/spec/faraday/adapter/excon_spec.rb b/spec/faraday/adapter/excon_spec.rb index fee13d05..c6d16ae2 100644 --- a/spec/faraday/adapter/excon_spec.rb +++ b/spec/faraday/adapter/excon_spec.rb @@ -10,7 +10,7 @@ RSpec.describe Faraday::Adapter::Excon do adapter = described_class.new(nil, debug_request: true) - conn = adapter.create_connection({ url: url }, {}) + conn = adapter.build_connection(url: url) expect(conn.data[:debug_request]).to be_truthy end