From 07072a428e7d7ce1866abc30f42e11c7aeb5ebdc Mon Sep 17 00:00:00 2001 From: akr Date: Fri, 30 Sep 2005 16:48:46 +0000 Subject: * lib/open-uri.rb (OpenURI.open_loop): prohibit multiple proxy options. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@9339 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- lib/open-uri.rb | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) (limited to 'lib') diff --git a/lib/open-uri.rb b/lib/open-uri.rb index daa5a87b5..b57156bbc 100644 --- a/lib/open-uri.rb +++ b/lib/open-uri.rb @@ -147,15 +147,27 @@ module OpenURI end def OpenURI.open_loop(uri, options) # :nodoc: - if options.include? :proxy_http_basic_authentication - opt_proxy, proxy_user, proxy_pass = options[:proxy_http_basic_authentication] + proxy_opts = [] + proxy_opts << :proxy_http_basic_authentication if options.include? :proxy_http_basic_authentication + proxy_opts << :proxy if options.include? :proxy + proxy_opts.compact! + if 1 < proxy_opts.length + raise ArgumentError, "multiple proxy options specified" + end + case proxy_opts.first + when :proxy_http_basic_authentication + opt_proxy, proxy_user, proxy_pass = options.fetch(:proxy_http_basic_authentication) proxy_user = proxy_user.to_str proxy_pass = proxy_pass.to_str if opt_proxy == true raise ArgumentError.new("Invalid authenticated proxy option: #{options[:proxy_http_basic_authentication].inspect}") end - else - opt_proxy = options.fetch(:proxy, true) + when :proxy + opt_proxy = options.fetch(:proxy) + proxy_user = nil + proxy_pass = nil + when nil + opt_proxy = true proxy_user = nil proxy_pass = nil end @@ -511,7 +523,7 @@ module OpenURI # If nil is given for the proxy URI, this option is just ignored. # # If :proxy and :proxy_http_basic_authentication is specified, - # :proxy_http_basic_authentication is preferred. + # ArgumentError is raised. # # [:http_basic_authentication] # Synopsis: -- cgit