Mercurial > public > mercurial-scm > hg-stable
comparison mercurial/hgweb/request.py @ 4250:ca639faa38a2
Merge with crew-stable.
author | Alexis S. L. Carvalho <alexis@cecm.usp.br> |
---|---|
date | Mon, 19 Mar 2007 19:16:35 -0300 |
parents | ba45041827a2 cc81c512a531 |
children | ff7253a0d1da |
comparison
equal
deleted
inserted
replaced
4249:7663780b55a7 | 4250:ca639faa38a2 |
---|---|
14 self.destmaker = destmaker | 14 self.destmaker = destmaker |
15 | 15 |
16 def __call__(self, wsgienv, start_response): | 16 def __call__(self, wsgienv, start_response): |
17 return _wsgirequest(self.destmaker(), wsgienv, start_response) | 17 return _wsgirequest(self.destmaker(), wsgienv, start_response) |
18 | 18 |
19 class _wsgioutputfile(object): | |
20 def __init__(self, request): | |
21 self.request = request | |
22 | |
23 def write(self, data): | |
24 self.request.write(data) | |
25 def writelines(self, lines): | |
26 for line in lines: | |
27 self.write(line) | |
28 def flush(self): | |
29 return None | |
30 def close(self): | |
31 return None | |
32 | |
33 class _wsgirequest(object): | 19 class _wsgirequest(object): |
34 def __init__(self, destination, wsgienv, start_response): | 20 def __init__(self, destination, wsgienv, start_response): |
35 version = wsgienv['wsgi.version'] | 21 version = wsgienv['wsgi.version'] |
36 if (version < (1, 0)) or (version >= (2, 0)): | 22 if (version < (1, 0)) or (version >= (2, 0)): |
37 raise RuntimeError("Unknown and unsupported WSGI version %d.%d" \ | 23 raise RuntimeError("Unknown and unsupported WSGI version %d.%d" \ |
38 % version) | 24 % version) |
39 self.inp = wsgienv['wsgi.input'] | 25 self.inp = wsgienv['wsgi.input'] |
40 self.out = _wsgioutputfile(self) | |
41 self.server_write = None | 26 self.server_write = None |
42 self.err = wsgienv['wsgi.errors'] | 27 self.err = wsgienv['wsgi.errors'] |
43 self.threaded = wsgienv['wsgi.multithread'] | 28 self.threaded = wsgienv['wsgi.multithread'] |
44 self.multiprocess = wsgienv['wsgi.multiprocess'] | 29 self.multiprocess = wsgienv['wsgi.multiprocess'] |
45 self.run_once = wsgienv['wsgi.run_once'] | 30 self.run_once = wsgienv['wsgi.run_once'] |
46 self.env = wsgienv | 31 self.env = wsgienv |
47 self.form = cgi.parse(self.inp, self.env, keep_blank_values=1) | 32 self.form = cgi.parse(self.inp, self.env, keep_blank_values=1) |
48 self.start_response = start_response | 33 self.start_response = start_response |
49 self.headers = [] | 34 self.headers = [] |
50 destination.run_wsgi(self) | 35 destination.run_wsgi(self) |
36 | |
37 out = property(lambda self: self) | |
51 | 38 |
52 def __iter__(self): | 39 def __iter__(self): |
53 return iter([]) | 40 return iter([]) |
54 | 41 |
55 def read(self, count=-1): | 42 def read(self, count=-1): |
73 self.server_write(thing) | 60 self.server_write(thing) |
74 except socket.error, inst: | 61 except socket.error, inst: |
75 if inst[0] != errno.ECONNRESET: | 62 if inst[0] != errno.ECONNRESET: |
76 raise | 63 raise |
77 | 64 |
65 def writelines(self, lines): | |
66 for line in lines: | |
67 self.write(line) | |
68 | |
69 def flush(self): | |
70 return None | |
71 | |
72 def close(self): | |
73 return None | |
74 | |
78 def header(self, headers=[('Content-type','text/html')]): | 75 def header(self, headers=[('Content-type','text/html')]): |
79 self.headers.extend(headers) | 76 self.headers.extend(headers) |
80 | 77 |
81 def httphdr(self, type, filename=None, length=0, headers={}): | 78 def httphdr(self, type, filename=None, length=0, headers={}): |
82 headers = headers.items() | 79 headers = headers.items() |