Spaces:
Sleeping
Sleeping
| from functools import wraps | |
| from typing import Callable | |
| def route_middleware(*middlewares: Callable): | |
| def decorator(route_func: Callable): | |
| 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 | |