Skip to content

Commit

Permalink
Add before and after requests to remaining
Browse files Browse the repository at this point in the history
  • Loading branch information
tarsil committed Feb 12, 2025
1 parent 6a2caa3 commit 54169fe
Showing 1 changed file with 37 additions and 9 deletions.
46 changes: 37 additions & 9 deletions lilya/routing.py
Original file line number Diff line number Diff line change
Expand Up @@ -283,6 +283,8 @@ class Path(BaseHandler, BasePath):
"permissions",
"exception_handlers",
"deprecated",
"before_request",
"after_request",
"__handler_app__",
"_signature",
)
Expand All @@ -298,6 +300,8 @@ def __init__(
middleware: Sequence[DefineMiddleware] | None = None,
permissions: Sequence[DefinePermission] | None = None,
exception_handlers: Mapping[Any, ExceptionHandler] | None = None,
before_request: Sequence[Callable[..., Any]] | None = None,
after_request: Sequence[Callable[..., Any]] | None = None,
deprecated: bool = False,
) -> None:
assert path.startswith("/"), "Paths must start with '/'"
Expand Down Expand Up @@ -335,6 +339,9 @@ def __init__(
self._apply_middleware(self.middleware)
self._apply_permissions(self.wrapped_permissions)

self.before_request = before_request if before_request is not None else []
self.after_request = after_request if after_request is not None else []

if self.methods is not None:
self.methods = [method.upper() for method in self.methods]
if HTTPMethod.GET in self.methods:
Expand Down Expand Up @@ -525,6 +532,8 @@ class WebSocketPath(BaseHandler, BasePath):
"middleware",
"permissions",
"exception_handlers",
"before_request",
"after_request",
"__handler_app__",
"_signature",
)
Expand All @@ -539,6 +548,8 @@ def __init__(
middleware: Sequence[DefineMiddleware] | None = None,
permissions: Sequence[DefinePermission] | None = None,
exception_handlers: Mapping[Any, ExceptionHandler] | None = None,
before_request: Sequence[Callable[..., Any]] | None = None,
after_request: Sequence[Callable[..., Any]] | None = None,
) -> None:
assert path.startswith("/"), "Paths must start with '/'"
self.path = clean_path(path)
Expand Down Expand Up @@ -569,6 +580,9 @@ def __init__(
wrap_permission(permission) for permission in permissions or []
]

self.before_request = before_request if before_request is not None else []
self.after_request = after_request if after_request is not None else []

self._apply_middleware(self.middleware)
self._apply_permissions(self.wrapped_permissions)

Expand Down Expand Up @@ -735,6 +749,8 @@ class Host(BasePath):
"middleware",
"permissions",
"exception_handlers",
"before_request",
"after_request",
)

def __init__(
Expand All @@ -746,6 +762,8 @@ def __init__(
middleware: Sequence[DefineMiddleware] | None = None,
permissions: Sequence[DefinePermission] | None = None,
exception_handlers: Mapping[Any, ExceptionHandler] | None = None,
before_request: Sequence[Callable[..., Any]] | None = None,
after_request: Sequence[Callable[..., Any]] | None = None,
) -> None:
assert not host.startswith("/"), "Host must not start with '/'"
self.host = host
Expand All @@ -762,6 +780,9 @@ def __init__(
wrap_permission(permission) for permission in permissions or []
]

self.before_request = before_request if before_request is not None else []
self.after_request = after_request if after_request is not None else []

self._apply_middleware(self.middleware)
self._apply_permissions(self.wrapped_permissions)

Expand Down Expand Up @@ -993,9 +1014,9 @@ def __init__(
deprecated: bool = False,
is_sub_router: bool = False,
) -> None:
assert lifespan is None or (
on_startup is None and on_shutdown is None
), "Use either 'lifespan' or 'on_startup'/'on_shutdown', not both."
assert lifespan is None or (on_startup is None and on_shutdown is None), (
"Use either 'lifespan' or 'on_startup'/'on_shutdown', not both."
)

if inspect.isasyncgenfunction(lifespan) or inspect.isgeneratorfunction(lifespan):
raise ImproperlyConfigured(
Expand Down Expand Up @@ -1823,6 +1844,8 @@ class Include(BasePath):
"permissions",
"exception_handlers",
"deprecated",
"before_request",
"after_request",
)

def __init__(
Expand All @@ -1837,6 +1860,8 @@ def __init__(
middleware: Sequence[DefineMiddleware] | None = None,
permissions: Sequence[DefinePermission] | None = None,
exception_handlers: Mapping[Any, ExceptionHandler] | None = None,
before_request: Sequence[Callable[..., Any]] | None = None,
after_request: Sequence[Callable[..., Any]] | None = None,
include_in_schema: bool = True,
deprecated: bool = False,
redirect_slashes: bool = True,
Expand All @@ -1860,14 +1885,14 @@ def __init__(
None
"""
assert path == "" or path.startswith("/"), "Routed paths must start with '/'"
assert (
app is not None or routes is not None or namespace is not None
), "Either 'app=...', or 'routes=...', or 'namespace=...' must be specified"
assert app is not None or routes is not None or namespace is not None, (
"Either 'app=...', or 'routes=...', or 'namespace=...' must be specified"
)
self.path = clean_path(path)

assert (
namespace is None or routes is None
), "Either 'namespace=...' or 'routes=', not both."
assert namespace is None or routes is None, (
"Either 'namespace=...' or 'routes=', not both."
)

if namespace and not isinstance(namespace, str):
raise ImproperlyConfigured("Namespace must be a string. Example: 'myapp.routes'.")
Expand Down Expand Up @@ -1906,6 +1931,9 @@ def __init__(
wrap_permission(permission) for permission in permissions or []
]

self.before_request = before_request if before_request is not None else []
self.after_request = after_request if after_request is not None else []

self._apply_middleware(self.middleware)
self._apply_permissions(self.wrapped_permissions)

Expand Down

0 comments on commit 54169fe

Please sign in to comment.