diff options
Diffstat (limited to 'lib/net/http.rb')
-rw-r--r-- | lib/net/http.rb | 96 |
1 files changed, 54 insertions, 42 deletions
diff --git a/lib/net/http.rb b/lib/net/http.rb index f2a259a18a..e1bda208fa 100644 --- a/lib/net/http.rb +++ b/lib/net/http.rb @@ -453,13 +453,25 @@ module Net class HTTP < Protocol - HTTPVersion = '1.1' - # - # connection + # constructors # - protocol_param :port, '80' + class << self + + def start( address, port = nil, p_addr = nil, p_port = nil, &block ) + new( address, port, p_addr, p_port ).start( &block ) + end + + alias newobj new + + def new( address, port = nil, p_addr = nil, p_port = nil ) + obj = Proxy(p_addr, p_port).newobj(address, port) + setimplversion obj + obj + end + + end def initialize( addr, port = nil ) super @@ -467,6 +479,15 @@ module Net @seems_1_0_server = false end + + # + # connection + # + + protocol_param :port, '80' + + HTTPVersion = '1.1' + private def do_start @@ -506,26 +527,19 @@ module Net public class << self - def Proxy( p_addr, p_port = nil ) - if p_addr then - ProxyMod.create_proxy_class( p_addr, p_port || self.port ) - else - self - end - end - - alias orig_new new + p_addr or return self - def new( address, port = nil, p_addr = nil, p_port = nil ) - c = p_addr ? self::Proxy(p_addr, p_port) : self - i = c.orig_new( address, port ) - setimplversion i - i - end - - def start( address, port = nil, p_addr = nil, p_port = nil, &block ) - new( address, port, p_addr, p_port ).start( &block ) + p_port ||= port() + mod = ProxyDelta + proxyclass = Class.new(self) + proxyclass.module_eval { + include mod + @is_proxy_class = true + @proxy_address = p_addr + @proxy_port = p_port + } + proxyclass end @is_proxy_class = false @@ -538,7 +552,6 @@ module Net attr_reader :proxy_address attr_reader :proxy_port - end def proxy? @@ -556,40 +569,39 @@ module Net alias proxyaddr proxy_address alias proxyport proxy_port - def edit_path( path ) - path - end + private + # without proxy - module ProxyMod + def conn_address + address + end - def self.create_proxy_class( p_addr, p_port ) - mod = self - klass = Class.new( HTTP ) - klass.module_eval { - include mod - @is_proxy_class = true - @proxy_address = p_addr - @proxy_port = p_port - } - klass - end + def conn_port + port + end + def edit_path( path ) + path + end + + module ProxyDelta private + + # with proxy def conn_address - proxy_address() + proxy_address end def conn_port - proxy_port() + proxy_port end def edit_path( path ) 'http://' + addr_port() + path end - - end # module ProxyMod + end # |