Source code for mctiers.errors

from __future__ import annotations

from typing import Any, Optional

import aiohttp


[docs] class MCTiersException(Exception): """ Base exception for the package """
[docs] class HTTPException(MCTiersException): """ Exception raised for an unsuccessful HTTP response """
[docs] def __init__( self, response: aiohttp.ClientResponse, data: Any, ) -> None: self.response: aiohttp.ClientResponse = response self.status: int = response.status self.code: Optional[str] = None self.text: str if isinstance(data, dict): code = data.get("code") message = data.get("message") self.code = str(code) if code is not None else None self.text = str(message) if message is not None else "" else: self.text = str(data) message = self.text or response.reason super().__init__( f"{self.status} {response.reason}: {message}" )
[docs] class BadRequest(HTTPException): """ Exception raised for HTTP 400 responses """
[docs] class NotFound(HTTPException): """ Exception raised for HTTP 404 responses """
[docs] class RateLimited(HTTPException): """ Exception raised for HTTP 429 responses """
[docs] def __init__( self, response: aiohttp.ClientResponse, data: Any, *, retry_after: Optional[float] = None, ) -> None: self.retry_after: Optional[float] = retry_after super().__init__( response, data )
[docs] class InternalServerError(HTTPException): """ Exception raised for HTTP 5xx responses """
[docs] class InvalidGamemode(BadRequest): """ Exception raised when the API reports an invalid gamemode """