36 lines
1.1 KiB
Python
36 lines
1.1 KiB
Python
from app.providers.base import MusicProviderClient
|
|
|
|
|
|
class MusicProviderRegistry:
|
|
"""
|
|
Registry to manage and retrieve music provider clients.
|
|
"""
|
|
_providers = {}
|
|
|
|
@classmethod
|
|
def register_provider(cls, provider: MusicProviderClient):
|
|
"""
|
|
Registers a music provider client instance.
|
|
:param provider: An instance of a MusicProviderClient subclass.
|
|
"""
|
|
cls._providers[provider._identifier] = provider
|
|
|
|
@classmethod
|
|
def get_provider(cls, identifier: str) -> MusicProviderClient:
|
|
"""
|
|
Retrieves a registered music provider client by its identifier.
|
|
:param identifier: The unique identifier for the provider.
|
|
:return: An instance of MusicProviderClient.
|
|
"""
|
|
if identifier not in cls._providers:
|
|
raise ValueError(f"No provider found with identifier '{identifier}'.")
|
|
return cls._providers[identifier]
|
|
|
|
@classmethod
|
|
def list_providers(cls) -> list:
|
|
"""
|
|
Lists all registered providers.
|
|
:return: A list of registered provider identifiers.
|
|
"""
|
|
return list(cls._providers.keys())
|