lib/active_merchant/connection.rb in activemerchant-1.79.2 vs lib/active_merchant/connection.rb in activemerchant-1.80.0

- old
+ new

@@ -12,12 +12,13 @@ OPEN_TIMEOUT = 60 READ_TIMEOUT = 60 VERIFY_PEER = true CA_FILE = File.expand_path('../certs/cacert.pem', File.dirname(__FILE__)) CA_PATH = nil + MIN_VERSION = :TLS1_1 RETRY_SAFE = false - RUBY_184_POST_HEADERS = { "Content-Type" => "application/x-www-form-urlencoded" } + RUBY_184_POST_HEADERS = { 'Content-Type' => 'application/x-www-form-urlencoded' } attr_accessor :endpoint attr_accessor :open_timeout attr_accessor :read_timeout attr_accessor :verify_peer @@ -49,11 +50,11 @@ @ca_path = CA_PATH @max_retries = MAX_RETRIES @ignore_http_status = false @ssl_version = nil if Net::HTTP.instance_methods.include?(:min_version=) - @min_version = nil + @min_version = MIN_VERSION @max_version = nil end @ssl_connection = {} @proxy_address = :ENV @proxy_port = nil @@ -63,14 +64,15 @@ raise ArgumentError, "can't wiredump to frozen #{device.class}" if device && device.frozen? @wiredump_device = device end def request(method, body, headers = {}) - headers['connection'] ||= 'close' - request_start = Process.clock_gettime(Process::CLOCK_MONOTONIC) + headers = headers.dup + headers['connection'] ||= 'close' + retry_exceptions(:max_retries => max_retries, :logger => logger, :tag => tag) do begin info "connection_http_method=#{method.to_s.upcase} connection_uri=#{endpoint}", tag result = nil @@ -80,11 +82,11 @@ @ssl_connection = http.ssl_connection info "connection_ssl_version=#{ssl_connection[:version]} connection_ssl_cipher=#{ssl_connection[:cipher]}", tag result = case method when :get - raise ArgumentError, "GET requests do not support a request body" if body + raise ArgumentError, 'GET requests do not support a request body' if body http.get(endpoint.request_uri, headers) when :post debug body http.post(endpoint.request_uri, body, RUBY_184_POST_HEADERS.merge(headers)) when :put @@ -108,18 +110,18 @@ else raise ArgumentError, "Unsupported request method #{method.to_s.upcase}" end end - info "--> %d %s (%d %.4fs)" % [result.code, result.message, result.body ? result.body.length : 0, realtime], tag + info '--> %d %s (%d %.4fs)' % [result.code, result.message, result.body ? result.body.length : 0, realtime], tag debug result.body result end end ensure - info "connection_request_total_time=%.4fs" % [Process.clock_gettime(Process::CLOCK_MONOTONIC) - request_start], tag + info 'connection_request_total_time=%.4fs' % [Process.clock_gettime(Process::CLOCK_MONOTONIC) - request_start], tag http.finish if http.started? end private @@ -142,10 +144,10 @@ http.open_timeout = open_timeout http.read_timeout = read_timeout end def configure_ssl(http) - return unless endpoint.scheme == "https" + return unless endpoint.scheme == 'https' http.use_ssl = true http.ssl_version = ssl_version if ssl_version if http.respond_to?(:min_version=) http.min_version = min_version if min_version