Source code for audible.exceptions

from typing import TYPE_CHECKING, Any


if TYPE_CHECKING:
    import httpx


[docs] class AudibleError(Exception): """Base class for all errors."""
[docs] class RequestError(AudibleError): """Base class for all request errors."""
[docs] class StatusError(RequestError): """Base class for all errors except NotResponding and RatelimitDetectedError.""" def __init__(self, resp: "httpx.Response", data: Any) -> None: self.response = resp self.code = resp.status_code self.method = getattr(resp, "method", None) self.reason = resp.reason_phrase if isinstance(data, dict): self.error = data.get("error") if "message" in data: self.error = data.get("message") else: self.error = data self.fmt = f"{self.reason} ({self.code}): {self.error}" super().__init__(self.fmt)
[docs] class NotResponding(RequestError): """Raised if the API request timed out.""" def __init__(self) -> None: self.code = 504 self.error = "API request timed out, please be patient." super().__init__(self.error)
[docs] class NetworkError(RequestError): """Raised if there is an issue with the network (i.e. requests.ConnectionError).""" def __init__(self) -> None: self.code = 503 self.error = "Network down." super().__init__(self.error)
[docs] class BadRequest(StatusError): """Raised when status code 400 is returned. Typically, when at least one search parameter was not provided. """
[docs] class NotFoundError(StatusError): """Raised if no result is found."""
[docs] class ServerError(StatusError): """Raised if the api service is having issues."""
[docs] class Unauthorized(StatusError): """Raised if you passed invalid credentials."""
[docs] class RatelimitError(StatusError): """Raised if ratelimit is hit."""
[docs] class UnexpectedError(StatusError): """Raised if the error was not caught."""
[docs] class AuthFlowError(AudibleError): """Raised if no auth method available."""
[docs] class NoRefreshToken(AudibleError): """Raised if refresh token is needed but not provided."""
[docs] class FileEncryptionError(AudibleError): """Raised if something is wrong with file encryption."""