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()