from aiohttp import web from aiohttp_apispec import docs, headers_schema, querystring_schema from server.constants import BASE_API_PREFIX from server.scenarios.playlists.get_favorites.common import get_meta_playlists_info from server.schemas.auth import AccountHeader from server.schemas.favorites.playlists import V1FavoritesPlaylistsDetailed from server.utils.pagination import get_links from server.utils.response import dump_response_schema router = web.RouteTableDef() @router.get(BASE_API_PREFIX + "/v1/favorites/playlists/detailed/") @docs(tags=["favorites", "playlist", "spotify", "apple", "amazon"], summary="Get account favorite playlists.") @headers_schema(AccountHeader) @querystring_schema(V1FavoritesPlaylistsDetailed.Request) @dump_response_schema(V1FavoritesPlaylistsDetailed.Response) async def get(request: web.Request) -> web.Response: params, headers = request["querystring"], request["headers"] result = await get_meta_playlists_info(headers, params) result.update(get_links(request, result["count"], params["offset"], params["limit"])) return result