beeseek-devs team mailing list archive
-
beeseek-devs team
-
Mailing list archive
-
Message #00114
[Branch ~beeseek-devs/beeseek/trunk] Rev 200: Correct all problems with the HTTP abstract interfaces.
------------------------------------------------------------
revno: 200
committer: Andrea Corbellini <andrea.corbellini@xxxxxxxxxxx>
branch nick: interfaces
timestamp: Sat 2009-01-17 17:41:25 +0100
message:
Correct all problems with the HTTP abstract interfaces.
modified:
beeseek/honeybee/handler.py
beeseek/network/highlevel.py
beeseek/network/http.py
beeseek/network/lowlevel.py
beeseek/tests/network.py
=== modified file 'beeseek/honeybee/handler.py'
--- a/beeseek/honeybee/handler.py 2009-01-15 16:12:04 +0000
+++ b/beeseek/honeybee/handler.py 2009-01-17 16:41:25 +0000
@@ -33,23 +33,22 @@
def handle(self):
try:
- self.read_request()
+ requestline, clientheaders = self.read_request()
except EOFError:
return
- if self.requestline[0] == self.CONNECT:
- self.handle_connect()
+ if requestline[0] == self.CONNECT:
+ self.handle_connect(requestline)
self.close()
return
- hostname = self.requestline[1][7:]
+ hostname = requestline[1][7:]
if '/' in hostname:
hostname, page = hostname.split('/', 1)
else:
page = ''
- headers = self.clientheaders
- if 'Proxy-Connection' in headers:
- self.will_close = (headers.pop('Proxy-Connection').lower()
+ if 'Proxy-Connection' in clientheaders:
+ self.will_close = (clientheaders.pop('Proxy-Connection').lower()
== 'close')
else:
self.will_close = True
@@ -92,21 +91,20 @@
host = HTTPClientApplication()
host.connect((hostname, port))
- info = self.requestline
- host.start_request(info[0], page, headers, version=info[2])
+ host.start_request(requestline[0], page, clientheaders,
+ version=requestline[2])
host.raw_writelines(self.iter_raw_body())
host.flush()
- host.read_response()
- info = host.statusline
- self.start_response(info[0], info[1],
- host.serverheaders, version=info[2])
+ statusline, serverheaders = host.read_response()
+ self.start_response(statusline[0], statusline[1], serverheaders,
+ version=statusline[2])
self.raw_writelines(host.iter_raw_body())
self.end_response()
self.flush()
- def handle_connect(self):
- hostname, port = self.requestline[1].split(':')
+ def handle_connect(self, requestline):
+ hostname, port = requestline[1].split(':')
host = IPSocket()
host.connect((hostname, int(port)))
self.start_response(200, 'Connection established', {})
=== modified file 'beeseek/network/highlevel.py'
--- a/beeseek/network/highlevel.py 2009-01-17 15:56:43 +0000
+++ b/beeseek/network/highlevel.py 2009-01-17 16:41:25 +0000
@@ -79,6 +79,10 @@
def _read_eof(self, size=-1):
return ''
+ def writelines(self, data):
+ for item in data:
+ self.write(data)
+
# Handler methods
def start_loop(self):
=== modified file 'beeseek/network/http.py'
--- a/beeseek/network/http.py 2009-01-17 12:54:42 +0000
+++ b/beeseek/network/http.py 2009-01-17 16:41:25 +0000
@@ -27,11 +27,6 @@
methods = dict
versions = dict
-
- statusline = tuple
- requestline = tuple
- serverheaders = dict
- clientheaders = dict
will_close = bool
# Read methods
@@ -42,7 +37,7 @@
def read_status_line(self):
pass
- def read_headers(self):
+ def read_headers(self, cls=None):
pass
def iter_headers(self):
@@ -413,7 +408,7 @@
class HTTPClientApplication(HTTPApplication):
- __slots__ = ('statusline', 'serverheaders')
+ __slots__ = 'statusline'
implements(IHTTPApplication, IClientApplication)
@@ -431,23 +426,25 @@
self.will_close = style == 1
def read_response(self):
- self.statusline = self.read_status_line()
- self.serverheaders = headers = self.read_headers()
+ statusline = self.read_status_line()
+ headers = self.read_headers()
style = self.get_transfer_style(headers)
self._set_read_methods(style, headers)
+ return statusline, headers
class HTTPServerApplication(HTTPApplication):
- __slots__ = ('requestline', 'clientheaders')
+ __slots__ = ()
implements(IHTTPApplication, IServerApplication)
def read_request(self):
- self.requestline = self.read_request_line()
- self.clientheaders = headers = self.read_headers()
+ requestline = self.read_request_line()
+ headers = self.read_headers()
style = self.get_transfer_style(headers)
self._set_read_methods(style, headers)
+ return requestline, headers
def start_response(self, status, reason, headers, version=None):
self.send_status_line(status, reason, version or self.HTTP11)
=== modified file 'beeseek/network/lowlevel.py'
--- a/beeseek/network/lowlevel.py 2009-01-17 15:52:47 +0000
+++ b/beeseek/network/lowlevel.py 2009-01-17 16:41:25 +0000
@@ -323,13 +323,6 @@
:type size: int
"""
- def __iter__(self):
- """Iter all the lines from the stream.
-
- :return: An iter that calls ``readline()`` until the stream is
- finished.
- """
-
# Send methods
def write(self, data):
=== modified file 'beeseek/tests/network.py'
--- a/beeseek/tests/network.py 2009-01-17 15:56:43 +0000
+++ b/beeseek/tests/network.py 2009-01-17 16:41:25 +0000
@@ -17,6 +17,7 @@
"""Test the network module."""
+import os
from unittest import TestCase
from beeseek.network import *
@@ -70,15 +71,15 @@
peer.close()
server.close()
- def t1est_ipsocket(self):
+ def test_ipsocket(self):
self.common_tests(IPSocket, ('', port))
if has_ipv6:
- def t1est_ipv6socket(self):
+ def test_ipv6socket(self):
self.common_tests(IPv6Socket, ('', port))
if has_unix:
- def t1est_unixsocket(self):
+ def test_unixsocket(self):
self.common_tests(UNIXSocket, '/tmp/testsocket')
os.unlink('/tmp/testsocket')
@@ -106,9 +107,9 @@
}
client.start_request(client.POST, page, headers)
client.flush()
- peer.read_request()
- assert peer.requestline == (peer.POST, page, peer.HTTP11)
- assert dict(peer.clientheaders.iteritems()) == headers
+ retval = peer.read_request()
+ assert retval[0] == (peer.POST, page, peer.HTTP11)
+ assert dict(retval[1].iteritems()) == headers
client.write(string)
client.end_request()
@@ -122,9 +123,9 @@
}
peer.start_response(200, 'OK', headers)
peer.flush()
- client.read_response()
- assert client.statusline == (200, 'OK', peer.HTTP11)
- assert dict(client.serverheaders.iteritems()) == headers
+ retval = client.read_response()
+ assert retval[0] == (200, 'OK', peer.HTTP11)
+ assert dict(retval[1].iteritems()) == headers
peer.write(string)
peer.end_response()
--
BeeSeek mainline
https://code.launchpad.net/~beeseek-devs/beeseek/trunk
You are receiving this branch notification because you are subscribed to it.