summaryrefslogtreecommitdiff
path: root/api/opendc/util/exceptions.py
diff options
context:
space:
mode:
authorGeorgios Andreadis <info@gandreadis.com>2020-07-20 12:44:04 +0200
committerFabian Mastenbroek <mail.fabianm@gmail.com>2020-08-24 19:48:12 +0200
commit53e60ccf0636e0076837d66a7dbea527e3b6e98d (patch)
tree041f83ae919d7ee9b5691a1666dbb61af26967d0 /api/opendc/util/exceptions.py
parentd8479e7e3744b8d1d31ac4d9f972e560eacd2cf8 (diff)
parent2a5f50e591f5e9c1da5db2f2011c779a88121675 (diff)
Merge pull request #9 from atlarge-research/feat/opendc-node
Add simulator integration
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