summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog6
-rw-r--r--lib/open-uri.rb18
2 files changed, 22 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index f9300197fa6..f870e1ebb3a 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+Fri Feb 11 11:33:53 2005 Tanaka Akira <akr@m17n.org>
+
+ * lib/open-uri.rb (URI::HTTP#proxy_open): new option supported:
+ :http_basic_authentication.
+ suggested by Kent Sibilev. [ruby-core:4392]
+
Thu Feb 10 11:14:17 2005 NAKAMURA Usaku <usa@ruby-lang.org>
* win32/Makefile.sub (COMMON_HEADERS): shouldn't include winsock2.h.
diff --git a/lib/open-uri.rb b/lib/open-uri.rb
index 2c87e292246..ff25b849af0 100644
--- a/lib/open-uri.rb
+++ b/lib/open-uri.rb
@@ -95,9 +95,9 @@ module OpenURI
:proxy => true,
:progress_proc => true,
:content_length_proc => true,
+ :http_basic_authentication => true,
}
-
def OpenURI.check_options(options) # :nodoc:
options.each {|k, v|
next unless Symbol === k
@@ -381,6 +381,15 @@ module OpenURI
# When false or nil is given, the environment variables are ignored and
# connection will be made to a server directly.
#
+ # [:http_basic_authentication]
+ # Synopsis:
+ # :http_basic_authentication=>[user, password]
+ #
+ # If :http_basic_authentication is specified,
+ # the value should be an array which contains 2 strings:
+ # username and password.
+ # It is used for HTTP Basic authentication defined by RFC 2617.
+ #
# [:content_length_proc]
# Synopsis:
# :content_length_proc => lambda {|content_length| ... }
@@ -547,8 +556,13 @@ module URI
require 'net/http'
resp = nil
+ req = Net::HTTP::Get.new(uri.to_s, header)
+ if options.include? :http_basic_authentication
+ user, pass = options[:http_basic_authentication]
+ req.basic_auth user, pass
+ end
Net::HTTP.start(self.host, self.port) {|http|
- http.request_get(uri.to_s, header) {|response|
+ http.request(req) {|response|
resp = response
if options[:content_length_proc] && Net::HTTPSuccess === resp
if resp.key?('Content-Length')