def error_handler(self, response: aiohttp.ClientResponse, method):
"""Called if the response's status is not 200.
Raises the appropriate error to the status code.
Parameters
----------
response : dict
The response obj, used for grabbing status/JSON.
method
The method this response was used with.
Raises
-------
Any
"""
error_message = None
error_json = await response.json()
if error_json is not None:
error_message = error_json['status']['message']
if response.status == 400:
try:
raise errors.BadRequest(error_json)
except errors.BadRequest as e:
log.error(e)
elif response.status == 403:
raise errors.UnAuthorized
elif response.status == 404:
raise errors.EmptyResponse(message=error_message)
elif response.status == 422:
raise errors.InactivePlayer
elif response.status == 429:
cooldown = int(response.headers.get("Retry-After"))
log.error(" 429 - Rate limited for {0} seconds on method {1}".format(cooldown, method))
self.handlers[method].cool_down = cooldown
await self.handlers[method].cool_down_handler()
elif response.status in [500, 502, 503, 504]:
raise errors.ServiceUnavailable
评论列表
文章目录