ruby-changes:47939
From: naruse <ko1@a...>
Date: Thu, 28 Sep 2017 19:51:41 +0900 (JST)
Subject: [ruby-changes:47939] naruse:r60054 (trunk): Net::HTTP.new: Support no_proxy parameter [Feature #11195]
naruse 2017-09-28 19:51:37 +0900 (Thu, 28 Sep 2017) New Revision: 60054 https://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=revision&revision=60054 Log: Net::HTTP.new: Support no_proxy parameter [Feature #11195] Modified files: trunk/NEWS trunk/lib/net/http.rb trunk/test/net/http/test_http.rb Index: lib/net/http.rb =================================================================== --- lib/net/http.rb (revision 60053) +++ lib/net/http.rb (revision 60054) @@ -629,10 +629,11 @@ module Net #:nodoc: https://github.com/ruby/ruby/blob/trunk/lib/net/http.rb#L629 # # If you are connecting to a custom proxy, +p_addr+ the DNS name or IP # address of the proxy host, +p_port+ the port to use to access the proxy, - # and +p_user+ and +p_pass+ the username and password if authorization is - # required to use the proxy. + # +p_user+ and +p_pass+ the username and password if authorization is + # required to use the proxy, and p_no_proxy spcifies hosts which doesn't + # use the proxy. # - def HTTP.new(address, port = nil, p_addr = :ENV, p_port = nil, p_user = nil, p_pass = nil) + def HTTP.new(address, port = nil, p_addr = :ENV, p_port = nil, p_user = nil, p_pass = nil, p_no_proxy = nil) http = super address, port if proxy_class? then # from Net::HTTP::Proxy() @@ -644,6 +645,10 @@ module Net #:nodoc: https://github.com/ruby/ruby/blob/trunk/lib/net/http.rb#L645 elsif p_addr == :ENV then http.proxy_from_env = true else + if p_addr && p_no_proxy && !URI::Generic.use_proxy?(p_addr, p_addr, p_port, p_no_proxy) + p_addr = nil + p_port = nil + end http.proxy_address = p_addr http.proxy_port = p_port || default_port http.proxy_user = p_user Index: test/net/http/test_http.rb =================================================================== --- test/net/http/test_http.rb (revision 60053) +++ test/net/http/test_http.rb (revision 60054) @@ -97,6 +97,16 @@ class TestNetHTTP < Test::Unit::TestCase https://github.com/ruby/ruby/blob/trunk/test/net/http/test_http.rb#L97 end end + def test_proxy_address_no_proxy + clean_http_proxy_env do + http = Net::HTTP.new 'hostname.example', nil, 'proxy.example', nil, nil, nil, 'example' + assert_nil http.proxy_address + + http = Net::HTTP.new '10.224.1.1', nil, 'proxy.example', nil, nil, nil, 'example,10.224.0.0/22' + assert_nil http.proxy_address + end + end + def test_proxy_from_env_ENV clean_http_proxy_env do ENV['http_proxy'] = 'http://proxy.example:8000' Index: NEWS =================================================================== --- NEWS (revision 60053) +++ NEWS (revision 60054) @@ -66,6 +66,10 @@ with all sufficient information, see the https://github.com/ruby/ruby/blob/trunk/NEWS#L66 * Kernel#yield_self [Feature #6721] +* Net::HTTP + + * Net::HTTP.new supports no_proxy parameter [Feature #11195] + * Numeric * Numerical comparison operators (<,<=,>=,>) no longer rescue exceptions -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/