feat: config file
refactor: as the config module changed test: add test for config test: add test for local fetcher and local enrichers test: add test for manual insertion fix: some random bugs left by the last commit
This commit is contained in:
@@ -12,7 +12,7 @@ from loguru import logger
|
||||
|
||||
from .base import BaseAuthenticator
|
||||
from ..cache import CacheEngine
|
||||
from ..config import HTTP_TIMEOUT, MUSIXMATCH_COOLDOWN_MS, credentials
|
||||
from ..config import CredentialConfig, GeneralConfig, MUSIXMATCH_COOLDOWN_MS
|
||||
|
||||
_MUSIXMATCH_TOKEN_URL = "https://apic-desktop.musixmatch.com/ws/1.1/token.get"
|
||||
|
||||
@@ -24,8 +24,10 @@ _MXM_BASE_PARAMS = {
|
||||
|
||||
|
||||
class MusixmatchAuthenticator(BaseAuthenticator):
|
||||
def __init__(self, cache: CacheEngine) -> None:
|
||||
self._cache = cache
|
||||
def __init__(
|
||||
self, cache: CacheEngine, credentials: CredentialConfig, general: GeneralConfig
|
||||
) -> None:
|
||||
super().__init__(cache, credentials, general)
|
||||
self._cached_token: Optional[str] = None
|
||||
self._cooldown_until_ms: int = 0
|
||||
|
||||
@@ -77,7 +79,7 @@ class MusixmatchAuthenticator(BaseAuthenticator):
|
||||
logger.debug("Musixmatch: fetching anonymous token")
|
||||
|
||||
try:
|
||||
async with httpx.AsyncClient(timeout=HTTP_TIMEOUT) as client:
|
||||
async with httpx.AsyncClient(timeout=self._general.http_timeout) as client:
|
||||
resp = await client.get(url, headers=_MXM_HEADERS)
|
||||
resp.raise_for_status()
|
||||
data = resp.json()
|
||||
@@ -102,8 +104,8 @@ class MusixmatchAuthenticator(BaseAuthenticator):
|
||||
|
||||
async def _get_token(self) -> Optional[str]:
|
||||
"""Return a valid token: env var > memory > DB > fresh fetch."""
|
||||
if credentials.MUSIXMATCH_USERTOKEN:
|
||||
return credentials.MUSIXMATCH_USERTOKEN
|
||||
if self._credentials.musixmatch_usertoken:
|
||||
return self._credentials.musixmatch_usertoken
|
||||
|
||||
if self._cached_token:
|
||||
return self._cached_token
|
||||
@@ -139,7 +141,7 @@ class MusixmatchAuthenticator(BaseAuthenticator):
|
||||
self._set_cooldown()
|
||||
return None
|
||||
|
||||
async with httpx.AsyncClient(timeout=HTTP_TIMEOUT) as client:
|
||||
async with httpx.AsyncClient(timeout=self._general.http_timeout) as client:
|
||||
url = f"{url_base}?{urlencode({**_MXM_BASE_PARAMS, **params, 'usertoken': token})}"
|
||||
resp = await client.get(url, headers=_MXM_HEADERS)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user