Mercurial > cosocket
changeset 32:1acccfa6a4f6
Added support for header parsing.
author | Atul Varma <varmaa@toolness.com> |
---|---|
date | Mon, 27 Apr 2009 13:51:19 -0700 |
parents | 041bda62b614 |
children | 8146a59c8045 |
files | openwebchat.py |
diffstat | 1 files changed, 16 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/openwebchat.py Mon Apr 27 11:44:38 2009 -0700 +++ b/openwebchat.py Mon Apr 27 13:51:19 2009 -0700 @@ -2,10 +2,18 @@ import math import re import httplib +import cStringIO +import mimetools from cosocket import * import channels +class Conversation(list): + pass + +class Conversations(dict): + pass + class OpenWebChatServer(object): CONVERSATION_URL = re.compile('\/conversations\/([A-Za-z0-9_]+)') @@ -15,7 +23,8 @@ 'js' : 'text/javascript', 'css' : 'text/css'} - def __init__(self, addr): + def __init__(self, addr, conversations): + self._convs = conversations self._server = CoroutineSocketServer(addr, self._server_coroutine) @@ -82,7 +91,8 @@ request = yield until_received(terminator = '\r\n\r\n') request = request.splitlines() request_line = request[0] - request_headers = request[1:] + stringfile = cStringIO.StringIO('\n'.join(request[1:])) + headers = mimetools.Message(stringfile) req_parts = request_line.split() if req_parts[1] == '/listen': yield self._until_multipart_header_sent('chunk') @@ -92,6 +102,8 @@ 'chunk', 'Got message %d from %s.' % (num, ip)) elif req_parts[1] == '/send': + length = int(headers.getheader('Content-Length', 0)) + msg = yield until_received(bytes = length) yield channels.until_message_sent('global', (addr[0], 1)) yield self._until_http_response_sent('sent.') @@ -113,5 +125,6 @@ code = 404) if __name__ == '__main__': - server = OpenWebChatServer(('127.0.0.1', 8071)) + server = OpenWebChatServer(('127.0.0.1', 8071), + Conversations()) server.run()