6 # This software may be used and distributed according to the terms |
6 # This software may be used and distributed according to the terms |
7 # of the GNU General Public License, incorporated herein by reference. |
7 # of the GNU General Public License, incorporated herein by reference. |
8 |
8 |
9 import socket, cgi, errno |
9 import socket, cgi, errno |
10 from common import ErrorResponse, statusmessage |
10 from common import ErrorResponse, statusmessage |
|
11 |
|
12 shortcuts = { |
|
13 'cl': [('cmd', ['changelog']), ('rev', None)], |
|
14 'sl': [('cmd', ['shortlog']), ('rev', None)], |
|
15 'cs': [('cmd', ['changeset']), ('node', None)], |
|
16 'f': [('cmd', ['file']), ('filenode', None)], |
|
17 'fl': [('cmd', ['filelog']), ('filenode', None)], |
|
18 'fd': [('cmd', ['filediff']), ('node', None)], |
|
19 'fa': [('cmd', ['annotate']), ('filenode', None)], |
|
20 'mf': [('cmd', ['manifest']), ('manifest', None)], |
|
21 'ca': [('cmd', ['archive']), ('node', None)], |
|
22 'tags': [('cmd', ['tags'])], |
|
23 'tip': [('cmd', ['changeset']), ('node', ['tip'])], |
|
24 'static': [('cmd', ['static']), ('file', None)] |
|
25 } |
|
26 |
|
27 def expand(form): |
|
28 for k in shortcuts.iterkeys(): |
|
29 if k in form: |
|
30 for name, value in shortcuts[k]: |
|
31 if value is None: |
|
32 value = form[k] |
|
33 form[name] = value |
|
34 del form[k] |
|
35 return form |
11 |
36 |
12 class wsgirequest(object): |
37 class wsgirequest(object): |
13 def __init__(self, wsgienv, start_response): |
38 def __init__(self, wsgienv, start_response): |
14 version = wsgienv['wsgi.version'] |
39 version = wsgienv['wsgi.version'] |
15 if (version < (1, 0)) or (version >= (2, 0)): |
40 if (version < (1, 0)) or (version >= (2, 0)): |
19 self.err = wsgienv['wsgi.errors'] |
44 self.err = wsgienv['wsgi.errors'] |
20 self.threaded = wsgienv['wsgi.multithread'] |
45 self.threaded = wsgienv['wsgi.multithread'] |
21 self.multiprocess = wsgienv['wsgi.multiprocess'] |
46 self.multiprocess = wsgienv['wsgi.multiprocess'] |
22 self.run_once = wsgienv['wsgi.run_once'] |
47 self.run_once = wsgienv['wsgi.run_once'] |
23 self.env = wsgienv |
48 self.env = wsgienv |
24 self.form = cgi.parse(self.inp, self.env, keep_blank_values=1) |
49 self.form = expand(cgi.parse(self.inp, self.env, keep_blank_values=1)) |
25 self._start_response = start_response |
50 self._start_response = start_response |
26 self.server_write = None |
51 self.server_write = None |
27 self.headers = [] |
52 self.headers = [] |
28 |
53 |
29 def __iter__(self): |
54 def __iter__(self): |