исправлена обработка запросов с ошибкой не json формата
このコミットが含まれているのは:
コミット
46a6d33986
|
@ -1,3 +1,5 @@
|
|||
# TODO (MarshalX) все исключения должны заканчиваться на Error
|
||||
|
||||
class YandexMusicError(Exception):
|
||||
"""Базовый класс, представляющий исключения общего характера."""
|
||||
|
||||
|
|
|
@ -201,20 +201,24 @@ class Request:
|
|||
if 200 <= resp.status_code <= 299:
|
||||
return resp.content
|
||||
|
||||
parse = self._parse(resp.content)
|
||||
message = parse.get_error() or 'Unknown HTTPError'
|
||||
try:
|
||||
parse = self._parse(resp.content)
|
||||
message = parse.get_error()
|
||||
except YandexMusicError:
|
||||
message = 'Unknown HTTPError'
|
||||
|
||||
if resp.status_code in (401, 403):
|
||||
raise Unauthorized(message)
|
||||
elif resp.status_code == 400:
|
||||
raise BadRequest(message)
|
||||
elif resp.status_code in (404, 409, 413):
|
||||
# TODO (MarshalX) было бы удобнее при 404 выбрасывать NotFoundError. Наследник NetworkError
|
||||
raise NetworkError(message)
|
||||
|
||||
elif resp.status_code == 502:
|
||||
raise NetworkError('Bad Gateway')
|
||||
else:
|
||||
raise NetworkError(f'{message} ({resp.status_code})')
|
||||
raise NetworkError(f'{message} ({resp.status_code}): {resp.content}')
|
||||
|
||||
def get(self, url: str, params: dict = None, timeout: Union[int, float] = 5, *args, **kwargs) -> Union[dict, str]:
|
||||
"""Отправка GET запроса.
|
||||
|
|
|
@ -209,20 +209,24 @@ class Request:
|
|||
if 200 <= resp.status <= 299:
|
||||
return content
|
||||
|
||||
parse = self._parse(content)
|
||||
message = parse.get_error() or 'Unknown HTTPError'
|
||||
try:
|
||||
parse = self._parse(content)
|
||||
message = parse.get_error()
|
||||
except YandexMusicError:
|
||||
message = 'Unknown HTTPError'
|
||||
|
||||
if resp.status in (401, 403):
|
||||
raise Unauthorized(message)
|
||||
elif resp.status == 400:
|
||||
raise BadRequest(message)
|
||||
elif resp.status in (404, 409, 413):
|
||||
# TODO (MarshalX) было бы удобнее при 404 выбрасывать NotFoundError. Наследник NetworkError
|
||||
raise NetworkError(message)
|
||||
|
||||
elif resp.status == 502:
|
||||
raise NetworkError('Bad Gateway')
|
||||
else:
|
||||
raise NetworkError(f'{message} ({resp.status})')
|
||||
raise NetworkError(f'{message} ({resp.status}): {content}')
|
||||
|
||||
async def get(
|
||||
self, url: str, params: dict = None, timeout: Union[int, float] = 5, *args, **kwargs
|
||||
|
|
読み込み中…
新しいイシューから参照