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
"""