from requests import Response
from cdh.rest.logging import general_logger as logger
[docs]class ApiError(Exception):
"""General API errors"""
[docs] def __init__(self, status_code, message, *args):
super(ApiError, self).__init__(*args)
self.status_code = status_code
self.message = message
logger.error(f"Status {status_code}: {message}")
def __str__(self):
return 'ApiError ({}): {}'.format(self.status_code, self.message)
def __repr__(self):
return "<ApiError ({}): '{}'>".format(self.status_code, self.message)
[docs]class Forbidden(ApiError):
[docs] def __init__(self, response: Response):
super().__init__(
response.status_code,
"Forbidden for resource {}, using creds: {}".format(
response.url,
'Authorization' in response.request.headers
)
)
self.response = response
[docs]class Unauthorized(ApiError):
[docs] def __init__(self, response: Response):
super().__init__(
response.status_code,
"Unauthorized for resource {}, using creds: {}".format(
response.url,
'Authorization' in response.request.headers
)
)
self.response = response
[docs]class OperationNotEnabled(Exception):
"""Thrown when a call was made to a resources/collection operation that was
not enabled by it's config."""