Spaces:
Sleeping
Sleeping
File size: 643 Bytes
c01955c | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | from functools import wraps
from typing import Callable
def route_middleware(*middlewares: Callable):
def decorator(route_func: Callable):
@wraps(route_func)
async def wrapper(*args, **kwargs):
req = kwargs.get("req")
if req is None:
raise ValueError("Route must have 'request: Request' parameter")
for middleware in middlewares:
result = middleware(req)
if callable(getattr(result, "__await__", None)):
await result
return await route_func(*args, **kwargs)
return wrapper
return decorator
|