from __future__ import annotations from urllib.parse import urlencode from src import config from src.api_client.dsp import SpotifyApiClient from src.enums import ServiceType from ..schemas import SpotifyCallbackRequestSchema from .base import BaseDSPAuthorizer __all__ = ["SpotifyAuthorizer"] class SpotifyAuthorizer(BaseDSPAuthorizer[SpotifyApiClient]): service_type = ServiceType.spotify callback_schema = SpotifyCallbackRequestSchema() def get_auth_url(self) -> str: params = urlencode( { "response_type": "code", "client_id": config.SPOTIFY_CLIENT_ID, "scope": " ".join(config.SPOTIFY_SCOPES), "redirect_uri": self.get_callback_uri(), } ) return f"{SpotifyApiClient.base_auth_url}/authorize?{params}"