summaryrefslogtreecommitdiff
path: root/lib/open-uri.rb
diff options
context:
space:
mode:
authorakr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2005-09-30 16:48:46 +0000
committerakr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2005-09-30 16:48:46 +0000
commit372809129df72ab92534bb5e944cbcef34eeda9b (patch)
treef1523087b8939469d1a6230e4a0d5e5345678d30 /lib/open-uri.rb
parentfc1bdda026f296ca3955a2338a72971821eb034a (diff)
* lib/open-uri.rb (OpenURI.open_loop): prohibit multiple proxy
options. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@9339 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'lib/open-uri.rb')
-rw-r--r--lib/open-uri.rb22
1 files changed, 17 insertions, 5 deletions
diff --git a/lib/open-uri.rb b/lib/open-uri.rb
index daa5a87b54..b57156bbc9 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: