Source code for argus_api.exceptions.http
from requests import Response
def _format_error(e):
"""Formats an Argus error message
{
"type": "ACTION_ERROR",
"field": None,
"message": "Something went wrong",
"parameter": ...
}
into a single string to show as an error message at run-time
:param e:
:return:
"""
if e["type"] == "FIELD_ERROR":
return "%s (%s): %s" % (e["type"], e["field"], e["message"])
else:
return "%s: %s" % (e["type"], e["message"])
[docs]class ArgusException(Exception):
def __init__(self, json_or_response, errors=None):
if isinstance(json_or_response, dict):
json = json_or_response
elif isinstance(json_or_response, Response):
try:
json = json_or_response.json()
except:
json = {}
if "messages" in json:
self.message = "\n".join([
_format_error(msg) for msg in json["messages"]
])
super(ArgusException, self).__init__(self.message if hasattr(self, "message") else str(json))
self.json = json
[docs]class AuthenticationFailedException(ArgusException):
"""Used for HTTP 401"""
pass
[docs]class AccessDeniedException(ArgusException):
"""Used for HTTP 403"""
pass
[docs]class ObjectNotFoundException(ArgusException):
"""Used for HTTP 404"""
pass
[docs]class ValidationErrorException(ArgusException):
"""Used for HTTP 412"""
pass
[docs]class MultipleValidationErrorException(Exception):
pass