summaryrefslogtreecommitdiff
path: root/opendc-web/opendc-web-api/opendc/util/exceptions.py
diff options
context:
space:
mode:
Diffstat (limited to 'opendc-web/opendc-web-api/opendc/util/exceptions.py')
-rw-r--r--opendc-web/opendc-web-api/opendc/util/exceptions.py64
1 files changed, 64 insertions, 0 deletions
diff --git a/opendc-web/opendc-web-api/opendc/util/exceptions.py b/opendc-web/opendc-web-api/opendc/util/exceptions.py
new file mode 100644
index 00000000..7724a407
--- /dev/null
+++ b/opendc-web/opendc-web-api/opendc/util/exceptions.py
@@ -0,0 +1,64 @@
+class RequestInitializationError(Exception):
+ """Raised when a Request cannot successfully be initialized"""
+
+
+class UnimplementedEndpointError(RequestInitializationError):
+ """Raised when a Request path does not point to a module."""
+
+
+class MissingRequestParameterError(RequestInitializationError):
+ """Raised when a Request does not contain one or more required parameters."""
+
+
+class UnsupportedMethodError(RequestInitializationError):
+ """Raised when a Request does not use a supported REST method.
+
+ The method must be in all-caps, supported by REST, and implemented by the module.
+ """
+
+
+class AuthorizationTokenError(RequestInitializationError):
+ """Raised when an authorization token is not correctly verified."""
+
+
+class ForeignKeyError(Exception):
+ """Raised when a foreign key constraint is not met."""
+
+
+class RowNotFoundError(Exception):
+ """Raised when a database row is not found."""
+ def __init__(self, table_name):
+ super(RowNotFoundError, self).__init__('Row in `{}` table not found.'.format(table_name))
+
+ self.table_name = table_name
+
+
+class ParameterError(Exception):
+ """Raised when a parameter is either missing or incorrectly typed."""
+
+
+class IncorrectParameterError(ParameterError):
+ """Raised when a parameter is of the wrong type."""
+ def __init__(self, parameter_name, parameter_location):
+ super(IncorrectParameterError,
+ self).__init__('Incorrectly typed `{}` {} parameter.'.format(parameter_name, parameter_location))
+
+ self.parameter_name = parameter_name
+ self.parameter_location = parameter_location
+
+
+class MissingParameterError(ParameterError):
+ """Raised when a parameter is missing."""
+ def __init__(self, parameter_name, parameter_location):
+ super(MissingParameterError,
+ self).__init__('Missing required `{}` {} parameter.'.format(parameter_name, parameter_location))
+
+ self.parameter_name = parameter_name
+ self.parameter_location = parameter_location
+
+
+class ClientError(Exception):
+ """Raised when a 4xx response is to be returned."""
+ def __init__(self, response):
+ super(ClientError, self).__init__(str(response))
+ self.response = response