router.py 文件源码

python
阅读 26 收藏 0 点赞 0 评论 0

项目:Rinzler 作者: feliphebueno 项目源码 文件源码
def route(self, request: HttpRequest):
        """
        Prepares for the CallBackResolver and handles the response and exceptions
        :param request HttpRequest
        :rtype: HttpResponse
        """
        self.flush()
        self.__request = request
        self.__uri = request.path[1:]
        self.__method = request.method
        self.__bound_routes = dict()
        self.register('log', logging.getLogger(os.urandom(3).hex().upper()))
        self.register('router', RouteMapping())

        self.__app['router'].flush_routes()
        routes = self.__callable().connect(self.__app)

        self.__bound_routes = routes['router'].get__routes()

        request_headers = request.META
        if 'HTTP_USER_AGENT' in request_headers:
            indent = 2 if re.match("[Mozilla]{7}", request_headers['HTTP_USER_AGENT']) else 0
        else:
            indent = 0

        if self.set_end_point_uri() is False:
            return self.set_response_headers(self.no_route_found(self.__request).render(indent))

        acutal_params = self.get_url_params(self.get_end_point_uri())

        try:
            response = self.exec_route_callback(acutal_params)
            if type(response) == Response:
                return self.set_response_headers(response.render(indent))
            else:
                return self.set_response_headers(response)
        except InvalidInputException:
            self.__app['log'].error("< 400", exc_info=True)
            return self.set_response_headers(Response(None, status=400).render(indent))
        except AuthException as e:
            self.__app['log'].error("< 403", exc_info=True)
            return self.set_response_headers(Response(None, status=403).render(indent))
        except NotFoundException:
            self.__app['log'].error("< 404", exc_info=True)
            return self.set_response_headers(Response(None, status=404).render(indent))
        except RequestDataTooBig:
            self.__app['log'].error("< 413", exc_info=True)
            return self.set_response_headers(Response(None, status=413).render(indent))
        except BaseException as e:
            self.__app['log'].error("< 500", exc_info=True)
            return self.set_response_headers(Response(None, status=500).render(indent))
        finally:
            del self
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号