英文メールの書き方を勉強中の高橋です。ごぶさたしてます。

# ああ、RDの話はどんどん進んでるよ……。

さて、唐突ですが、http-access で proxy を使えるように
するための patchを作りました。
HTTP/1.0なproxyでは動くことを確認したのですが、HTTP/1.1
なproxyが手元にないので、Connection: Keep-Alive とかがで
きるかどうかはちょっと分かりません(_o_)
とりあえずこちらに流しておきます。

それと、http-access.rb と url-parse.rb の再配布条件って
どうなってるんでしょうか。 contribに置かれているもので、
特に記述のないものはRubyに準拠、ってことでいいんでし
たっけ?

高橋征義 (TAKAHASHI Masayoshi)       Email:maki / inac.co.jp


*** http-access.rb.old	Tue Aug 31 21:40:43 1999
--- http-access.rb	Wed Sep  1 12:59:27 1999
***************
*** 26,31 ****
--- 26,32 ----
  class HTTPAccess
    HTTP_Port = 80
    attr_reader :http_version, :code, :message, :headers
+   attr_reader :proxy
  
    def initialize(host, port=HTTP_Port, proxy=nil)
      @host = host
***************
*** 34,44 ****
      @requests = []
      @uagent = format("HTTPAccess/0.0.1 (%s; %s)",
  		    File.basename($0), 'ruby ' + VERSION)
    end
  
    # connect to the server
    def connect
!     @socket = HTTPSocket.new(@host, @port)
      @state = :WAIT
      @readbuf = ''
    end
--- 35,50 ----
      @requests = []
      @uagent = format("HTTPAccess/0.0.1 (%s; %s)",
  		    File.basename($0), 'ruby ' + VERSION)
+     @proxy = URL.new(proxy) if proxy
    end
  
    # connect to the server
    def connect
!     if @proxy == nil
!       @socket = HTTPSocket.new(@host, @port)
!     else
!       @socket = HTTPSocket.new(@proxy.host, @proxy.port)
!     end
      @state = :WAIT
      @readbuf = ''
    end
***************
*** 47,52 ****
--- 53,69 ----
    # send a request to the server
    def request(method, path=nil, header=nil)
      connect if @state == :INIT
+ 
+     # for http proxy
+     if @proxy
+       if @port
+ 	path = @proxy.scheme + '://' + @host +
+ 	  ":" + @port.to_s + path
+       else
+ 	path = @proxy.scheme + '://' + @host + path
+       end
+     end
+ 
      # send a request line
      @socket.putrequest(method, path)
  
***************
*** 84,90 ****
  
    # close the connection
    def close
!     @socket.close unless @socket.closed?
      @state = :INIT
    end
  
--- 101,109 ----
  
    # close the connection
    def close
!     unless @socket.nil?
!       @socket.close unless @socket.closed?
!     end
      @state = :INIT
    end
  
***************
*** 273,279 ****
    url = URL.new(urlstr)
    #exit
  
!   h = HTTPAccess.new(url.host, url.port)
    #
    p "get_header with block"
    h.request_head(url.path)
--- 292,300 ----
    url = URL.new(urlstr)
    #exit
  
!   proxy = 'http://proxy.some.where.jp:8080/'
! 
!   h = HTTPAccess.new(url.host, url.port, proxy)
    #
    p "get_header with block"
    h.request_head(url.path)