mercurial/hgweb/request.py
changeset 5566 d74fc8dec2b4
parent 5563 d61fea133f2d
child 5760 0145f9afb0e7
equal deleted inserted replaced
5565:feac5b0bf9ba 5566:d74fc8dec2b4
     8 
     8 
     9 import socket, cgi, errno
     9 import socket, cgi, errno
    10 from mercurial.i18n import gettext as _
    10 from mercurial.i18n import gettext as _
    11 from common import ErrorResponse, statusmessage
    11 from common import ErrorResponse, statusmessage
    12 
    12 
    13 class wsgiapplication(object):
    13 class wsgirequest(object):
    14     def __init__(self, destmaker):
    14     def __init__(self, wsgienv, start_response):
    15         self.destmaker = destmaker
       
    16 
       
    17     def __call__(self, wsgienv, start_response):
       
    18         return _wsgirequest(self.destmaker(), wsgienv, start_response)
       
    19 
       
    20 class _wsgirequest(object):
       
    21     def __init__(self, destination, wsgienv, start_response):
       
    22         version = wsgienv['wsgi.version']
    15         version = wsgienv['wsgi.version']
    23         if (version < (1, 0)) or (version >= (2, 0)):
    16         if (version < (1, 0)) or (version >= (2, 0)):
    24             raise RuntimeError("Unknown and unsupported WSGI version %d.%d"
    17             raise RuntimeError("Unknown and unsupported WSGI version %d.%d"
    25                                % version)
    18                                % version)
    26         self.inp = wsgienv['wsgi.input']
    19         self.inp = wsgienv['wsgi.input']
    31         self.run_once = wsgienv['wsgi.run_once']
    24         self.run_once = wsgienv['wsgi.run_once']
    32         self.env = wsgienv
    25         self.env = wsgienv
    33         self.form = cgi.parse(self.inp, self.env, keep_blank_values=1)
    26         self.form = cgi.parse(self.inp, self.env, keep_blank_values=1)
    34         self.start_response = start_response
    27         self.start_response = start_response
    35         self.headers = []
    28         self.headers = []
    36         destination.run_wsgi(self)
       
    37 
    29 
    38     out = property(lambda self: self)
    30     out = property(lambda self: self)
    39 
    31 
    40     def __iter__(self):
    32     def __iter__(self):
    41         return iter([])
    33         return iter([])
    90             headers.append(('Content-disposition', 'attachment; filename=%s' %
    82             headers.append(('Content-disposition', 'attachment; filename=%s' %
    91                             filename))
    83                             filename))
    92         if length:
    84         if length:
    93             headers.append(('Content-length', str(length)))
    85             headers.append(('Content-length', str(length)))
    94         self.header(headers)
    86         self.header(headers)
       
    87 
       
    88 def wsgiapplication(app_maker):
       
    89 	application = app_maker()
       
    90 	def run_wsgi(env, respond):
       
    91 		application(env, respond)
       
    92 	return run_wsgi