class HttpMetaCommunicator(object): def __init__(self): super(HttpMetaCommunicator, self).__init__() self.http = HttpMessage() def handle_read(self): if self.http.is_body(): if self._buffer == '': self.http = HttpMessage() self.fragmented = False else: if not self.fragmented: return super(HttpMetaCommunicator, self).handle_read() if self.make_http_message() is not None: self._buffer = self.process() self.fragmented = False return # The packet seams to be fragmented self.fragmented = True def make_http_message(self): if not self.http.is_headers(): res = self._buffer.partition("\r\n\r\n") if res[1] is not '': self.http.put_headers(res[0] + "\r\n") if self.http.path is not '': Logger.debug("Gateway:: HTTP request: " + self.http.path) self._buffer = res[2] else: return None if not self.http.is_body(): self.http.put_body(self._buffer) self._buffer = '' #TODO: prefer this way (implement later) #self._buffer = self._buffer[len_buf:] if not self.http.is_body(): return None return self.http def process(self): raise NotImplemented()
class HttpMetaCommunicator(object): def __init__(self): super(HttpMetaCommunicator, self).__init__() self.http = HttpMessage() def handle_read(self): if self.http.is_body(): if self._buffer == '': self.http = HttpMessage() self.fragmented = False else: if not self.fragmented: return super(HttpMetaCommunicator, self).handle_read() if self.make_http_message() is not None: self._buffer = self.process() self.fragmented = False return # The packet seams to be fragmented self.fragmented = True def make_http_message(self): if not self.http.is_headers(): res = self._buffer.partition("\r\n\r\n") if res[1] is not '': self.http.put_headers(res[0] + "\r\n") if self.http.path is not '': Logger.debug("[WebApps] HTTP request: " + self.http.path) self._buffer = res[2] else: return None if not self.http.is_body(): self.http.put_body(self._buffer) self._buffer = '' #TODO: prefer this way (implement later) #self._buffer = self._buffer[len_buf:] if not self.http.is_body(): return None return self.http def process(self): raise NotImplemented()