summaryrefslogtreecommitdiffstats
path: root/deluge/error.py
diff options
context:
space:
mode:
Diffstat (limited to 'deluge/error.py')
-rw-r--r--deluge/error.py96
1 files changed, 96 insertions, 0 deletions
diff --git a/deluge/error.py b/deluge/error.py
new file mode 100644
index 0000000..d542dc2
--- /dev/null
+++ b/deluge/error.py
@@ -0,0 +1,96 @@
+#
+# Copyright (C) 2008 Andrew Resch <andrewresch@gmail.com>
+# Copyright (C) 2011 Pedro Algarvio <pedro@algarvio.me>
+#
+# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
+# the additional special exception to link portions of this program with the OpenSSL library.
+# See LICENSE for more details.
+#
+
+
+class DelugeError(Exception):
+ def __new__(cls, *args, **kwargs):
+ inst = super().__new__(cls, *args, **kwargs)
+ inst._args = args
+ inst._kwargs = kwargs
+ return inst
+
+ def __init__(self, message=None):
+ super().__init__(message)
+ self.message = message
+
+ def __str__(self):
+ return self.message
+
+
+class DaemonRunningError(DelugeError):
+ pass
+
+
+class InvalidTorrentError(DelugeError):
+ pass
+
+
+class AddTorrentError(DelugeError):
+ pass
+
+
+class InvalidPathError(DelugeError):
+ pass
+
+
+class WrappedException(DelugeError):
+ def __init__(self, message, exception_type, traceback):
+ super().__init__(message)
+ self.type = exception_type
+ self.traceback = traceback
+
+ def __str__(self):
+ return f'{self.message}\n{self.traceback}'
+
+
+class _ClientSideRecreateError(DelugeError):
+ pass
+
+
+class IncompatibleClient(_ClientSideRecreateError):
+ def __init__(self, daemon_version):
+ self.daemon_version = daemon_version
+ msg = (
+ 'Your deluge client is not compatible with the daemon. '
+ 'Please upgrade your client to %(daemon_version)s'
+ ) % {'daemon_version': self.daemon_version}
+ super().__init__(message=msg)
+
+
+class NotAuthorizedError(_ClientSideRecreateError):
+ def __init__(self, current_level, required_level):
+ msg = ('Auth level too low: %(current_level)s < %(required_level)s') % {
+ 'current_level': current_level,
+ 'required_level': required_level,
+ }
+ super().__init__(message=msg)
+ self.current_level = current_level
+ self.required_level = required_level
+
+
+class _UsernameBasedPasstroughError(_ClientSideRecreateError):
+ def __init__(self, message, username):
+ super().__init__(message)
+ self.username = username
+
+
+class BadLoginError(_UsernameBasedPasstroughError):
+ pass
+
+
+class AuthenticationRequired(_UsernameBasedPasstroughError):
+ pass
+
+
+class AuthManagerError(_UsernameBasedPasstroughError):
+ pass
+
+
+class LibtorrentImportError(ImportError):
+ pass