Exemple #1
0
def path(route: str, view: Union[Type[AbstractView], List[RouteDef]], **kwargs):

    if isinstance(view, (list, tuple)):

        if not route.endswith('/'):
            route += '/'

        def _recursive(items):
            routes = []
            for pattern in items:
                if not isinstance(pattern, list):
                    routes.append(pattern)
                else:
                    routes += _recursive(pattern)
            return routes

        routes_def = _recursive(view)

        results = [RouteDef(
            method=route_def.method,
            path=(route + route_def.path),
            handler=route_def.handler,
            kwargs=route_def.kwargs)
            for route_def in routes_def]
        return results
    elif callable(view):
        return RouteDef(METH_ANY, route, view, kwargs)
    else:
        raise TypeError('view must be a callable or a list/tuple in the case of include().')
Exemple #2
0
 def aiohttp_routes(self) -> Iterable[RouteDef]:
     for route in self.routes:
         for method in self.methods:
             kwargs = {"allow_head": False} if method == "GET" else {}
             yield RouteDef(
                 method=method,
                 path=route,
                 handler=self.handler,
                 kwargs=kwargs,
             )
Exemple #3
0
 def add_routes(self, routes: list[RouteDef], router: Router = None):
     router = router if router is not None else self.app.router
     api_url_prefix = AppConfig.get("control_server.api.url_prefix",
                                    "/").rstrip("/")
     for route in routes:
         route_path = api_url_prefix + route.path
         log.debug("registering API resource %s %s to %s", route.method,
                   route_path, router)
         RouteDef(route.method, str(route_path), route.handler,
                  route.kwargs).register(router)
Exemple #4
0
 def inner(handler):
     handler = _handle(handler)
     self._items.append(
         RouteDef(method, f"{self.path_prefix}{path}", handler, kwargs))
     return handler
Exemple #5
0
 def inner(handler: _HandlerType) -> _HandlerType:
     self._items.append(RouteDef(method, path, handler, kwargs))
     self._items.append(RouteDef(hdrs.METH_GET, '/docs' + path, self.get_docs_response(handler), {}))
     return handler
Exemple #6
0
 def inner(handler):
     self._items.append(RouteDef(method, self.prefix + path, handler, kwargs))
     return handler
Exemple #7
0
def route(method: str, path: str, handler: _HandlerType,
          **kwargs: Any) -> RouteDef:
    return RouteDef(method, path, handlers.wraps(handler), kwargs)