2019-05-07 06:02:21 +09:00
|
|
|
import logging
|
|
|
|
|
2019-05-10 00:28:46 +09:00
|
|
|
from yandex_music import YandexMusicObject, Status
|
2019-05-07 06:02:21 +09:00
|
|
|
from yandex_music.utils.request import Request
|
|
|
|
from yandex_music.error import InvalidToken
|
|
|
|
|
|
|
|
|
|
|
|
class Client(YandexMusicObject):
|
|
|
|
def __init__(self, token, base_url=None, request=None):
|
|
|
|
self.token = token
|
|
|
|
self._request = request or Request(token)
|
|
|
|
self.logger = logging.getLogger(__name__)
|
|
|
|
|
|
|
|
if base_url is None:
|
|
|
|
base_url = 'https://api.music.yandex.net'
|
|
|
|
|
|
|
|
self.base_url = base_url
|
|
|
|
|
|
|
|
@staticmethod
|
|
|
|
def _validate_token(token):
|
|
|
|
if any(x.isspace() for x in token):
|
|
|
|
raise InvalidToken()
|
|
|
|
|
|
|
|
if len(token) != 39:
|
|
|
|
raise InvalidToken()
|
|
|
|
|
|
|
|
return token
|
|
|
|
|
|
|
|
@property
|
|
|
|
def request(self):
|
|
|
|
return self._request
|
|
|
|
|
2019-05-10 00:28:46 +09:00
|
|
|
def status(self, timeout=None, **kwargs):
|
2019-05-07 06:02:21 +09:00
|
|
|
url = f'{self.base_url}/account/status'
|
|
|
|
|
|
|
|
result = self._request.get(url, timeout=timeout)
|
|
|
|
|
2019-05-10 00:28:46 +09:00
|
|
|
status = Status.de_json(result, self)
|
2019-05-07 06:02:21 +09:00
|
|
|
|
2019-05-10 00:28:46 +09:00
|
|
|
return status
|