def __init__(self, client, request, headers): request = request.decode() self.reply_headers = header_set() self.reply_code = 200 http_request.request_count = http_request.request_count + 1 self.request_number = http_request.request_count self.request = request self.request_headers = headers self.client = client self.server = client.server self.tstart = time.time() # XXX use coro.now self.peer = client.peer self.output = buffered_output(self.client.conn) self.done_cv = latch() self.deflate = None m = http_request.request_re.match(request) if m: (self.method, self.uri, ver, self.version) = m.groups() self.method = self.method.lower() if not self.version: self.version = '0.9' m = http_request.path_re.match(self.uri) if m: (self.path, self.params, self.query, self.frag) = m.groups() else: self.bad = True else: self.version = '1.0' self.bad = True if self.has_body(): self.file = http_file(headers, client.stream)
def __init__ (self, client, request, headers): self.reply_headers = header_set() self.reply_code = 200 http_request.request_count = http_request.request_count + 1 self.request_number = http_request.request_count self.request = request self.request_headers = headers self.client = client self.server = client.server self.tstart = time.time() self.peer = client.peer self.output = buffered_output (self.client.conn) self.done_cv = latch() self.deflate = None m = http_request.request_re.match (request) if m: (self.method, self.uri, ver, self.version) = m.groups() self.method = self.method.lower() if not self.version: self.version = "0.9" m = http_request.path_re.match (self.uri) if m: (self.path, self.params, self.query, self.frag) = m.groups() else: self.bad = True else: self.version = "1.0" self.bad = True if self.has_body(): self.file = http_file (headers, client.stream)
def _read_message (self, req): req.response = self.stream.read_line()[:-2] lines = [] while 1: line = self.stream.read_line() if not line: raise HTTP_Protocol_Error ('unexpected close') elif line == '\r\n': break else: lines.append (line[:-2]) req.rheader = h = header_set (lines) if h['content-length'] or h['transfer-encoding']: req.rfile = http_file (h, self.stream)
def _read_message (self, req): line = self.stream.read_line() if not line: raise HTTP_Protocol_Error ('unexpected close') req.response = line[:-2] m = self.response_re.match (req.response) if not m: raise Bad_Response (req.response) else: req.version, req.reply_code, req.reason = m.groups() lines = [] while 1: line = self.stream.read_line() if not line: raise HTTP_Protocol_Error ('unexpected close') elif line == '\r\n': break else: lines.append (line[:-2]) req.rheader = h = header_set (lines) if req.has_body(): req.rfile = http_file (h, self.stream)