from aiohttp import web from aiohttp_apispec import docs, querystring_schema from server.constants import BASE_API_PREFIX, DSP from server.constants.playlists.meta import PlaylistMetaApolloInclude from server.scenarios.playlists.get_playlist_meta.common import get_meta_playlists_info from server.schemas.playlists.spotify.get_meta import V1PlaylistsSpotifyInfo from server.utils.response import dump_response_schema router = web.RouteTableDef() @router.get(BASE_API_PREFIX + "/v1/playlists/spotify/") @docs( tags=["playlist", "spotify"], summary="Get spotify playlists by ids.", ) @querystring_schema(V1PlaylistsSpotifyInfo.Request) @dump_response_schema(V1PlaylistsSpotifyInfo.Response(many=True)) async def get(request: web.Request) -> web.Response: params = request["querystring"] playlist_ids = params["playlist_id"] meta = await get_meta_playlists_info( playlist_list_id=playlist_ids, dsp=DSP.SPOTIFY, apollo_include=[PlaylistMetaApolloInclude.PLAYLIST_DATES_FULL.value], ) return meta