from __future__ import annotations from typing import Sequence, Type from src.enums import ServiceType from src.logger import BoundLogger from .apple_music import AppleMusicAuthorizer from .base import BaseDSPAuthorizer from .deezer import DeezerAuthorizer from .spotify import SpotifyAuthorizer from .youtube import YoutubeAuthorizer __all__ = [ "get_authorizer", "AUTHORIZERS", "SpotifyAuthorizer", "DeezerAuthorizer", "YoutubeAuthorizer", "AppleMusicAuthorizer", ] AUTHORIZERS: Sequence[Type[BaseDSPAuthorizer]] = ( SpotifyAuthorizer, DeezerAuthorizer, YoutubeAuthorizer, AppleMusicAuthorizer, ) def get_authorizer(service_type: ServiceType, *, logger: BoundLogger) -> BaseDSPAuthorizer | None: for authorizer_cls in AUTHORIZERS: if authorizer_cls.service_type == service_type: return authorizer_cls(logger=logger) return None