mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
aamine
* lib/net/http.rb: split HTTPResponse into HTTPReadResponse module. * lib/net/protocol.rb: add Net::net_private. * lib/net/protocol.rb: Socket#reopen takes arg, open_timeout. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@1164 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
bf5ea58942
commit
7e5f9d5a13
3 changed files with 79 additions and 42 deletions
|
@ -1,3 +1,12 @@
|
|||
Wed Feb 7 16:27:27 2001 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
|
||||
|
||||
* lib/net/http.rb: split HTTPResponse into HTTPReadResponse
|
||||
module.
|
||||
|
||||
* lib/net/protocol.rb: add Net::net_private.
|
||||
|
||||
* lib/net/protocol.rb: Socket#reopen takes arg, open_timeout.
|
||||
|
||||
Tue Feb 6 21:30:44 2001 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
|
||||
|
||||
* lib/net/http.rb: call on_connect() on re-opening socket.
|
||||
|
|
|
@ -221,6 +221,11 @@ module Net
|
|||
def do_finish
|
||||
end
|
||||
|
||||
def re_connect
|
||||
@socket.reopen @open_timeout
|
||||
on_connect
|
||||
end
|
||||
|
||||
|
||||
###
|
||||
### proxy
|
||||
|
@ -425,8 +430,7 @@ module Net
|
|||
start
|
||||
req['connection'] = 'close'
|
||||
elsif @socket.closed? then
|
||||
@socket.reopen
|
||||
on_connect
|
||||
re_connect
|
||||
end
|
||||
if @seems_1_0_server then
|
||||
req['connection'] = 'close'
|
||||
|
@ -553,12 +557,12 @@ module Net
|
|||
|
||||
|
||||
|
||||
class HTTP
|
||||
|
||||
###
|
||||
### request
|
||||
###
|
||||
|
||||
net_private {
|
||||
|
||||
class HTTPRequest
|
||||
|
||||
def initialize( path, uhead = nil )
|
||||
|
@ -578,8 +582,6 @@ module Net
|
|||
@http_version = nil
|
||||
end
|
||||
|
||||
public
|
||||
|
||||
attr_reader :path
|
||||
attr_reader :response
|
||||
attr_reader :http_version
|
||||
|
@ -616,7 +618,8 @@ module Net
|
|||
@u_header.each_value( &block )
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
private
|
||||
|
||||
def canonical( k )
|
||||
k.split('-').collect {|i| i.capitalize }.join('-')
|
||||
|
@ -637,7 +640,7 @@ module Net
|
|||
@socket = sock
|
||||
ihead.update @u_header
|
||||
yield ihead
|
||||
@response = read_response
|
||||
@response = get_response
|
||||
@sock = nil
|
||||
end
|
||||
|
||||
|
@ -653,13 +656,20 @@ module Net
|
|||
# read
|
||||
#
|
||||
|
||||
def read_response
|
||||
resp = rdresp0
|
||||
resp = rdresp0 while ContinueCode === resp
|
||||
def get_response
|
||||
begin
|
||||
resp = read_response
|
||||
end while ContinueCode === resp
|
||||
resp
|
||||
end
|
||||
|
||||
def rdresp0
|
||||
end
|
||||
|
||||
module HTTPReadResponse
|
||||
|
||||
private
|
||||
|
||||
def read_response
|
||||
resp = get_resline
|
||||
|
||||
while true do
|
||||
|
@ -694,13 +704,17 @@ module Net
|
|||
::Net::NetPrivate::HTTPResponse.new(
|
||||
status, discrip, @socket, type::HAS_BODY )
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
class HTTPRequest
|
||||
include ::Net::NetPrivate::HTTPReadResponse
|
||||
end
|
||||
|
||||
|
||||
class HTTPRequestWithData < HTTPRequest
|
||||
|
||||
private
|
||||
private
|
||||
|
||||
def exec( sock, ver, path, ihead, str = nil )
|
||||
check_arg str, block_given?
|
||||
|
@ -753,37 +767,41 @@ module Net
|
|||
|
||||
end
|
||||
|
||||
}
|
||||
|
||||
class Get < HTTPRequest
|
||||
HAS_BODY = true
|
||||
METHOD = 'GET'
|
||||
end
|
||||
|
||||
class Head < HTTPRequest
|
||||
HAS_BODY = false
|
||||
METHOD = 'HEAD'
|
||||
end
|
||||
class HTTP
|
||||
|
||||
class Post < HTTPRequestWithData
|
||||
HAS_BODY = true
|
||||
METHOD = 'POST'
|
||||
end
|
||||
class Get < ::Net::NetPrivate::HTTPRequest
|
||||
HAS_BODY = true
|
||||
METHOD = 'GET'
|
||||
end
|
||||
|
||||
class Put < HTTPRequestWithData
|
||||
HAS_BODY = true
|
||||
METHOD = 'PUT'
|
||||
end
|
||||
class Head < ::Net::NetPrivate::HTTPRequest
|
||||
HAS_BODY = false
|
||||
METHOD = 'HEAD'
|
||||
end
|
||||
|
||||
class Post < ::Net::NetPrivate::HTTPRequestWithData
|
||||
HAS_BODY = true
|
||||
METHOD = 'POST'
|
||||
end
|
||||
|
||||
class Put < ::Net::NetPrivate::HTTPRequestWithData
|
||||
HAS_BODY = true
|
||||
METHOD = 'PUT'
|
||||
end
|
||||
|
||||
end # HTTP::
|
||||
|
||||
|
||||
|
||||
module NetPrivate
|
||||
|
||||
###
|
||||
### response
|
||||
###
|
||||
|
||||
net_private {
|
||||
|
||||
class HTTPResponse < Response
|
||||
|
||||
HTTPCODE_CLASS_TO_OBJ = {
|
||||
|
@ -1027,7 +1045,7 @@ module Net
|
|||
'both of arg and block are given for HTTP method'
|
||||
end
|
||||
if block then
|
||||
ReadAdapter.new block
|
||||
::Net::NetPrivate::ReadAdapter.new block
|
||||
else
|
||||
dest or ''
|
||||
end
|
||||
|
@ -1035,7 +1053,6 @@ module Net
|
|||
|
||||
end
|
||||
|
||||
|
||||
end # module Net::NetPrivate
|
||||
}
|
||||
|
||||
end # module Net
|
||||
|
|
|
@ -64,6 +64,14 @@ require 'timeout'
|
|||
|
||||
module Net
|
||||
|
||||
module NetPrivate
|
||||
end
|
||||
|
||||
def self.net_private( &block )
|
||||
::Net::NetPrivate.module_eval( &block )
|
||||
end
|
||||
|
||||
|
||||
class Protocol
|
||||
|
||||
Version = '1.2.0'
|
||||
|
@ -232,6 +240,7 @@ module Net
|
|||
Session = Protocol
|
||||
|
||||
|
||||
net_private {
|
||||
|
||||
class Response
|
||||
|
||||
|
@ -255,6 +264,8 @@ module Net
|
|||
|
||||
end
|
||||
|
||||
}
|
||||
|
||||
|
||||
class ProtocolError < StandardError; end
|
||||
class ProtoSyntaxError < ProtocolError; end
|
||||
|
@ -326,8 +337,7 @@ module Net
|
|||
|
||||
|
||||
|
||||
module NetPrivate
|
||||
|
||||
net_private {
|
||||
|
||||
class WriteAdapter
|
||||
|
||||
|
@ -496,12 +506,14 @@ module Net
|
|||
"#<#{type} open=#{!@closed}>"
|
||||
end
|
||||
|
||||
def reopen
|
||||
def reopen( otime = nil )
|
||||
unless closed? then
|
||||
close
|
||||
@buffer = ''
|
||||
end
|
||||
@socket = TCPsocket.new( @addr, @port )
|
||||
timeout( otime ) {
|
||||
@socket = TCPsocket.new( @addr, @port )
|
||||
}
|
||||
@closed = false
|
||||
end
|
||||
|
||||
|
@ -676,7 +688,7 @@ module Net
|
|||
def write_bin( src, block )
|
||||
writing {
|
||||
if block then
|
||||
block.call WriteAdapter.new( self, :do_write )
|
||||
block.call ::Net::NetPrivate::WriteAdapter.new( self, :do_write )
|
||||
else
|
||||
src.each do |bin|
|
||||
do_write bin
|
||||
|
@ -690,7 +702,7 @@ module Net
|
|||
|
||||
wsize = use_each_crlf_line {
|
||||
if block then
|
||||
block.call WriteAdapter.new( self, :wpend_in )
|
||||
block.call ::Net::NetPrivate::WriteAdapter.new( self, :wpend_in )
|
||||
else
|
||||
wpend_in src
|
||||
end
|
||||
|
@ -830,8 +842,7 @@ module Net
|
|||
|
||||
end
|
||||
|
||||
|
||||
end # module Net::NetPrivate
|
||||
}
|
||||
|
||||
|
||||
def Net.quote( str )
|
||||
|
|
Loading…
Reference in a new issue