# Core Library modules
from typing import Any, Callable
# Third party modules
from requests import (
ConnectionError,
HTTPError,
RequestException,
Timeout,
TooManyRedirects,
)
# Local modules
from . import logger
[docs]
def request_exception(func: Callable) -> Callable:
def wrapper(*args: Any, **kwargs: Any) -> Any:
try:
result = func(*args, **kwargs)
except ConnectionError as e: # pragma: no cover
logger.error("A connection error occurred: %s", e)
raise SystemExit("A connection error occurred") from e
except TooManyRedirects as e: # pragma: no cover
logger.error("Too many redirects occurred: %s", e)
raise SystemExit("Too many redirects occurred") from e
except Timeout as e: # pragma: no cover
logger.error("The request timed out: %s", e)
raise SystemExit("The request timed out") from e
except HTTPError as e: # pragma: no cover
logger.error("An HTTP error occurred.: %s", e)
raise SystemExit("An HTTP error occurred.") from e
except RequestException as e: # pragma: no cover
logger.error(
"An ambiguous exception occurred while handling request: %s",
e,
)
raise SystemExit(
"An ambiguous exception occurred while handling request."
) from e
return result
return wrapper
[docs]
def file_exception(func: Callable) -> Callable:
def wrapper(*args: Any, **kwargs: Any) -> Any:
try:
result = func(*args, **kwargs)
except FileNotFoundError as e: # pragma: no cover
logger.error("The file does not exist: %s", e)
raise SystemExit("The file does not exist") from e
except PermissionError as e: # pragma: no cover
logger.error("Permission denied to file: %s", e)
raise SystemExit("Permission denied to file") from e
except IsADirectoryError as e: # pragma: no cover
logger.error("File is a directory not a file: %s", e)
raise SystemExit("File is a directory not a file") from e
except OSError as e: # pragma: no cover
logger.error("A general IO error has occurred opening file: %s", e)
raise SystemExit("A general IO error has occurred opening file") from e
except Exception as e: # pragma: no cover
logger.error("An error occurred: %s", e)
raise SystemExit("An error occurred") from e
return result
return wrapper