From 6d7ba58f880be618ade07f8ea080fe8c4bf8a896 Mon Sep 17 00:00:00 2001 From: cyfraeviolae Date: Wed, 3 Apr 2024 03:10:44 -0400 Subject: venv --- .../site-packages/litestar/routes/asgi.py | 54 ++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 venv/lib/python3.11/site-packages/litestar/routes/asgi.py (limited to 'venv/lib/python3.11/site-packages/litestar/routes/asgi.py') diff --git a/venv/lib/python3.11/site-packages/litestar/routes/asgi.py b/venv/lib/python3.11/site-packages/litestar/routes/asgi.py new file mode 100644 index 0000000..a8564d0 --- /dev/null +++ b/venv/lib/python3.11/site-packages/litestar/routes/asgi.py @@ -0,0 +1,54 @@ +from __future__ import annotations + +from typing import TYPE_CHECKING, Any + +from litestar.connection import ASGIConnection +from litestar.enums import ScopeType +from litestar.routes.base import BaseRoute + +if TYPE_CHECKING: + from litestar.handlers.asgi_handlers import ASGIRouteHandler + from litestar.types import Receive, Scope, Send + + +class ASGIRoute(BaseRoute): + """An ASGI route, handling a single ``ASGIRouteHandler``""" + + __slots__ = ("route_handler",) + + def __init__( + self, + *, + path: str, + route_handler: ASGIRouteHandler, + ) -> None: + """Initialize the route. + + Args: + path: The path for the route. + route_handler: An instance of :class:`~.handlers.ASGIRouteHandler`. + """ + self.route_handler = route_handler + super().__init__( + path=path, + scope_type=ScopeType.ASGI, + handler_names=[route_handler.handler_name], + ) + + async def handle(self, scope: Scope, receive: Receive, send: Send) -> None: + """ASGI app that authorizes the connection and then awaits the handler function. + + Args: + scope: The ASGI connection scope. + receive: The ASGI receive function. + send: The ASGI send function. + + Returns: + None + """ + + if self.route_handler.resolve_guards(): + connection = ASGIConnection["ASGIRouteHandler", Any, Any, Any](scope=scope, receive=receive) + await self.route_handler.authorize_connection(connection=connection) + + await self.route_handler.fn(scope=scope, receive=receive, send=send) -- cgit v1.2.3