from __future__ import annotations from urllib.parse import urlencode from src import config from src.api_client.dsp import YoutubeApiClient from src.enums import ServiceType from ..schemas import YoutubeCallbackRequestSchema from .base import BaseDSPAuthorizer __all__ = ["YoutubeAuthorizer"] class YoutubeAuthorizer(BaseDSPAuthorizer[YoutubeApiClient]): service_type = ServiceType.youtube callback_schema = YoutubeCallbackRequestSchema() def get_auth_url(self) -> str: params = urlencode( { "response_type": "code", "access_type": "offline", "prompt": "consent", "include_granted_scopes": "true", "client_id": config.GOOGLE_CLIENT_ID, "scope": " ".join(config.GOOGLE_SCOPES), "redirect_uri": self.get_callback_uri(), } ) return f"{YoutubeApiClient.base_oauth_url}?{params}"