summaryrefslogtreecommitdiff
path: root/api/opendc/util/exceptions.py
diff options
context:
space:
mode:
authorjc0b <j@jc0b.computer>2020-07-21 21:22:44 +0200
committerFabian Mastenbroek <mail.fabianm@gmail.com>2020-08-24 19:48:14 +0200
commit67b6ec800df8e023efadb60ae5f7919030b19789 (patch)
tree9aa496408a4097857b6a032b84dd0a396321e1d3 /api/opendc/util/exceptions.py
parent5b4ab37ac7be2b2c34e2fad928b0cd7f3a837263 (diff)
parent04686bf5cef4aea51fd613a158aa8b155763d0e7 (diff)
Merge branch 'master' onto local working copy
Preserve working copy while updating
Diffstat (limited to 'api/opendc/util/exceptions.py')
-rw-r--r--api/opendc/util/exceptions.py64
1 files changed, 64 insertions, 0 deletions
diff --git a/api/opendc/util/exceptions.py b/api/opendc/util/exceptions.py
new file mode 100644
index 00000000..7724a407
--- /dev/null
+++ b/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