Ticket #559: middleware-3.patch
-
_cpwsgi.py
old new 181 181 ) 182 182 s.protocol = server.protocol_version 183 183 184 185 # WSGI configuration components # 186 187 188 class WSGIMiddleware(object): 189 def __init__(self, middleware): 190 self.middleware = middleware 191 192 def __call__(self, app, **conf): 193 return self.middleware(app, **conf) 194 195 196 class WSGIMiddlewareCollection(object): 197 pass 198 199 default_wsgi_middleware_collection = WSGIMiddlewareCollection() 200 -
__init__.py
old new 12 12 tools = _cptools.default_toolbox 13 13 Tool = _cptools.Tool 14 14 15 from cherrypy import _cpwsgi 16 wsgi = _cpwsgi.default_wsgi_middleware_collection 17 WSGIMiddleware = _cpwsgi.WSGIMiddleware 18 15 19 from cherrypy import _cptree 16 20 tree = _cptree.Tree() 17 21 from cherrypy._cptree import Application -
_cptree.py
old new 1 import cherrypy 1 2 from cherrypy import _cpconfig, _cplogging, _cpwsgi 2 3 3 4 … … 20 21 21 22 def __init__(self, root, script_name="", conf=None): 22 23 self.log = _cplogging.LogManager(id(self)) 24 self.wsgimap = {"middleware_pipeline": [], 25 } 23 26 self.root = root 24 27 self.script_name = script_name 25 28 self.namespaces = {"log": lambda k, v: setattr(self.log, k, v), 29 "wsgi": self._set_wsgi, 26 30 } 27 31 self.conf = {} 28 32 if conf: 29 33 self.merge(conf) 30 34 35 self._setup_wsgiapp() 36 37 def _set_wsgi(self, k, v): 38 if k == "middleware_pipeline": 39 self.wsgimap[k] = v 40 else: 41 name, arg = k.split(".", 1) 42 bucket = self.wsgimap.setdefault(name, {}) 43 bucket[arg] = v 44 45 def _setup_wsgiapp(self): 46 wsgi = cherrypy.wsgi 47 wsgimap = self.wsgimap 48 def wsgiapp(environ, start_response): 49 return _cpwsgi._wsgi_callable(environ, start_response, app=self) 50 for name in reversed(wsgimap["middleware_pipeline"]): 51 middleware = getattr(wsgi, name) 52 middleware_conf = wsgimap.get(name, {}) 53 wsgiapp = middleware(wsgiapp, **middleware_conf) 54 self.wsgiapp = wsgiapp 55 31 56 def _get_script_name(self): 32 57 if self._script_name is None: 33 58 # None signals that the script name should be pulled from WSGI environ. … … 70 95 return scheme + host + self.script_name 71 96 72 97 def __call__(self, environ, start_response): 73 return _cpwsgi._wsgi_callable(environ, start_response, app=self)98 return self.wsgiapp(environ, start_response) 74 99 75 100 76 101 class Tree(object):

