mercurial/hgweb/request.py
changeset 6774 0dbb56e90a71
parent 6212 e75aab656f46
child 7180 a42d27bc809d
equal deleted inserted replaced
6735:8b09b0864781 6774:0dbb56e90a71
     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):