diff --git a/lib/httparty.rb b/lib/httparty.rb index f04f8d0e..0c479648 100644 --- a/lib/httparty.rb +++ b/lib/httparty.rb @@ -220,7 +220,28 @@ def write_timeout(value) default_options[:write_timeout] = value end + # Allows setting a default continue_timeout for all HTTP calls in seconds + # + # class Foo + # include HTTParty + # continue_timeout 10 + # end + def continue_timeout(value) + validate_timeout_argument(__method__, value) + default_options[:continue_timeout] = value + end + # Allows setting a default ssl_timeout for all HTTP calls in seconds + # + # class Foo + # include HTTParty + # ssl_timeout 10 + # end + def ssl_timeout(value) + validate_timeout_argument(__method__, value) + default_options[:ssl_timeout] = value + end + # Set an output stream for debugging, defaults to $stderr. # The output stream is passed on to Net::HTTP#set_debug_output. # diff --git a/lib/httparty/connection_adapter.rb b/lib/httparty/connection_adapter.rb index 262016fb..5487db4a 100644 --- a/lib/httparty/connection_adapter.rb +++ b/lib/httparty/connection_adapter.rb @@ -45,6 +45,8 @@ module HTTParty # * :+open_timeout+: http connection open_timeout in seconds, overrides timeout if set # * :+read_timeout+: http connection read_timeout in seconds, overrides timeout if set # * :+write_timeout+: http connection write_timeout in seconds, overrides timeout if set (Ruby >= 2.6.0 required) + # * :+continue_timeout+: http connection continue_timeout in seconds, overrides timeout if set + # * :+ssl_timeout+: http connection ssl_timeout in seconds, overrides timeout if set # * :+debug_output+: see HTTParty::ClassMethods.debug_output. # * :+cert_store+: contains certificate data. see method 'attach_ssl_certificates' # * :+pem+: contains pem client certificate data. see method 'attach_ssl_certificates' @@ -120,6 +122,8 @@ def connection http.open_timeout = options[:timeout] http.read_timeout = options[:timeout] http.write_timeout = options[:timeout] + http.continue_timeout = options[:timeout] + http.ssl_timeout = options[:timeout] end if add_timeout?(options[:read_timeout]) @@ -134,6 +138,14 @@ def connection http.write_timeout = options[:write_timeout] end + if add_timeout?(options[:continue_timeout]) + http.continue_timeout = options[:continue_timeout] + end + + if add_timeout?(options[:ssl_timeout]) + http.ssl_timeout = options[:ssl_timeout] + end + if add_max_retries?(options[:max_retries]) http.max_retries = options[:max_retries] end