Beispiel #1
0
 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)
Beispiel #2
0
 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)
Beispiel #3
0
 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)
Beispiel #4
0
 def get_request (self):
     request_line = self.stream.read_line()
     if not request_line:
         raise StopIteration
     else:
         # read header
         lines = []
         while 1:
             line = self.stream.read_line()
             # XXX handle continuation lines
             if line == '':
                 raise StopIteration
             elif line == '\r\n':
                 break
             else:
                 lines.append (line[:-2])
     return http_request (self.conn, request_line[:-2], header_set (lines))
Beispiel #5
0
 def get_request(self):
     request_line = self.stream.read_line()
     if not request_line:
         raise StopIteration
     else:
         # read header
         lines = []
         while 1:
             line = self.stream.read_line()
             # XXX handle continuation lines
             if line == b'':
                 raise StopIteration
             elif line == b'\r\n':
                 break
             else:
                 lines.append(line[:-2])
     return http_request(self.conn, request_line[:-2], header_set(lines))
Beispiel #6
0
 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)
Beispiel #7
0
 def POST (self, uri, content, **headers):
     headers = header_set().from_keywords (headers)
     req = self.send_request ('POST', uri, headers, content, force=True)
     req.wait()
     return req
Beispiel #8
0
 def GET_file (self, uri, **headers):
     headers = header_set().from_keywords (headers)
     req = self.send_request ('GET', uri, headers, force=False)
     req.wait()
     return req