Hi, I would like to use the code in BaseHTTPServer to parse the incoming message for Twisted. One way is to write an adapter which looks like class _ParseHTTPRequest(BaseHTTPServer.BaseHTTPRequestHandler): def __init__(self): # Don't worry about doing the real constructor; I just want access to # the 'parse_request' function. # I could also say "parse_request = BaseHTTPServer.BaseHTTPRequestHandler.parse_request pass def parse(self, raw_requestline, infile): self.raw_requestline = raw_requestline self.rfile = infile self.error_info = False self.parse_request() def send_error(self, code, message=None): self.error_info = (code, message) def parse(raw_requestline, infile): p = _ParseHTTPRequest() p.parse(raw_requestline, infile) return p # Then in the Twisted code def lineReceived(self, line): if self.__first_line: self.raw_requestline = line self.__first_line = 0 self.rfile = StringIO() else: self.rfile.write(line + "\n") if line == "": # end of headers p = _ParseHTTPRequest() if p.error_info is not None: ... handle errors else: work with p.headers, p.comand, etc. That should work, but I note that the 'parse_request' function is listed as "internal", which I take to mean that people like me shouldn't make any assumptions that it even exists, much less that I can make use of it for my own nefarious reasons. Can I get a better guarantee than that? I ask because I would rather that Twisted and Python work the same way (esp. since the Python code is generally more robust). Andrew dalke@dalkescientific.com
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4