Exemplo n.º 1
0
 def __call__(self, environ, start_response):
     request = Request(environ)
     for sub in self.subs:
         log.debug('try to match %s' % sub)
         # first match the domain if any try to match the path
         path_match, sub = self._match_path(dict(), request.path, [sub])
         if not sub:
             continue
         # found the good sub
         request.path_match = path_match
         for middleware in self.middlewares:
             maybe_response = middleware.process_request_before_view(self, request)
             if isinstance(maybe_response, Response):
                 return maybe_response(environ, start_response)
         try:
             response = sub(request)
         except Exception:  # XXX: improve this
             print_exc()
             response = self.internal_server_error(request)
             for middleware in self.middlewares:
                 maybe_response = middleware.process_response_before_answer(self, request, response)
                 if isinstance(maybe_response, Response):
                     return maybe_response(environ, start_response)
             return response(environ, start_response)
         else:
             for middleware in self.middlewares:
                 maybe_response = middleware.process_response_before_answer(self, request, response)
                 if isinstance(maybe_response, Response):
                     return maybe_response(environ, start_response)
             return response(environ, start_response)
     response = self.not_found(request)
     for middleware in self.middlewares:
         maybe_response = middleware.process_response_before_answer(self, request, response)
         if isinstance(maybe_response, Response):
             return maybe_response(environ, start_response)
     return response(environ, start_response)