From: Stas Shtin Date: Wed, 14 Apr 2010 20:58:46 +0000 (+0400) Subject: Successfully parsing HTTP requests from freeswitch X-Git-Url: https://vcs.maemo.org/git/?p=ipypbx;a=commitdiff_plain;h=caeac17c6ce9c15e81cd6c4522dc74e66972386e Successfully parsing HTTP requests from freeswitch --- diff --git a/src/ipypbx/http.py b/src/ipypbx/http.py index fe288f0..86699b9 100644 --- a/src/ipypbx/http.py +++ b/src/ipypbx/http.py @@ -72,9 +72,8 @@ class FreeswitchConfigServer(QtNetwork.QTcpServer): self.socket.readyRead.connect(self.receiveData) def receiveData(self): - while self.socket.canReadLine(): - line = str(self.socket.readLine()).strip() - print '<', line + # TODO: read in chunks. + for line in str(self.socket.readAll()).split('\r\n'): self.httpRequestParser.handle(line) @@ -103,7 +102,8 @@ class HttpRequestParser(object): self.method = None self.request_path = None self.http_version = None - self.message = '' + self.headers = {} + self.data = {} # Set initial state. self.state = self.HTTP_NONE @@ -114,6 +114,7 @@ class HttpRequestParser(object): """ for state in self.HTTP_STATES: if getattr(self, 'HTTP_%s' % state) == self.state: + print self.state, line getattr(self, 'handle%s' % state.title())(line) break else: @@ -142,6 +143,7 @@ class HttpRequestParser(object): self.headers[key] = value else: self.state += 1 + self.handle(line) def handleEmpty(self, line): """ @@ -153,4 +155,5 @@ class HttpRequestParser(object): """ Append to message body. """ - self.message += line + self.data = dict(pair.split('=', 2) for pair in line.split('&')) + print self.data