← Back to team overview

beeseek-devs team mailing list archive

[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.