[#4479] Requesting addition to IRB (configurable standard output) — Sascha Ebach <se@...>

Hello,

13 messages 2005/02/24
[#4482] Re: Requesting addition to IRB (configurable standard output) — Sam Roberts <sroberts@...> 2005/02/25

Quoting se@digitale-wertschoepfung.de, on Fri, Feb 25, 2005 at 01:22:34AM +0900:

[#4483] Re: Requesting addition to IRB (configurable standard output) — Eric Hodel <drbrain@...7.net> 2005/02/25

On 24 Feb 2005, at 19:51, Sam Roberts wrote:

[#4488] Re: Requesting addition to IRB (configurable standard output) — Sam Roberts <sroberts@...> 2005/02/26

Quoting drbrain@segment7.net, on Sat, Feb 26, 2005 at 02:43:31AM +0900:

[#4489] Re: Requesting addition to IRB (configurable standard output) — Eric Hodel <drbrain@...7.net> 2005/02/26

On 25 Feb 2005, at 16:03, Sam Roberts wrote:

HTTP Basic authentication for open_uri

From: Kent Sibilev <ksibilev@...>
Date: 2005-02-08 18:26:12 UTC
List: ruby-core #4392
Can somebody apply the following patch for open_uri in order to enable 
HTTP basic authentication:

RCS file: /src/ruby/lib/open-uri.rb,v
retrieving revision 1.29
diff -u -r1.29 open-uri.rb
--- lib/open-uri.rb     8 Feb 2005 03:06:29 -0000       1.29
+++ lib/open-uri.rb     8 Feb 2005 18:13:43 -0000
@@ -548,7 +548,9 @@
        require 'net/http'
        resp = nil
        Net::HTTP.start(self.host, self.port) {|http|
-        http.request_get(uri.to_s, header) {|response|
+        request = Net::HTTP::Get.new(uri.to_s, header)
+        request.basic_auth self.user, self.password if self.user
+        http.request(request) {|response|
            resp = response
            if options[:content_length_proc] && Net::HTTPSuccess === resp
              if resp.key?('Content-Length')

That enables the following usage:

open('http://user:pwd@homename') do |f|
...
end

Right now I have to do this hack:

#!/usr/bin/env ruby

require 'open-uri'
require 'date'
require 'rexml/document'

# == HACK ==

module URI
   class HTTP
     def direct_open(buf, options)
       options.merge!('Authorization' => auth_token) if self.user
       proxy_open(buf, request_uri, options)
     end

     def auth_token
       'Basic ' + ["#{user}:#{password}"].pack('m').delete("\r\n")
     end
     private :auth_token
   end
end

# == END OF HACK ==

user  = ARGV[0] || 'user'
pwd   = ARGV[1] || 'password'
dt    = ARGV[3] || Date.today.strftime('%Y-%m-%d')

open("http://#{user}:#{pwd}@del.icio.us/api/posts/get?dt=#{dt}") do |f|
   doc = REXML::Document.new(f)
   doc.elements.each('//post') do |post|
     puts "#{post.attribute('description')}: #{post.attribute('href')}"
   end
end

Cheers,
Kent.


In This Thread

Prev Next