summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCalum Lind <calumlind+deluge@gmail.com>2017-06-23 12:19:39 +0100
committerCalum Lind <calumlind+deluge@gmail.com>2017-06-23 12:19:39 +0100
commit0cc0882ac90fb32ea75b2628abe38734015b06fc (patch)
tree5137728eab1632d45051309bbbe682d8084a9aea
parenta7c4228ce79bdd7b8658322173430773c06bbc24 (diff)
downloaddeluge-0cc0882ac90fb32ea75b2628abe38734015b06fc.tar.gz
deluge-0cc0882ac90fb32ea75b2628abe38734015b06fc.tar.bz2
deluge-0cc0882ac90fb32ea75b2628abe38734015b06fc.zip
[WebUI] Refactor out AuthError for NotAuthorizedError
-rw-r--r--deluge/ui/web/auth.py15
-rw-r--r--deluge/ui/web/json_api.py18
2 files changed, 9 insertions, 24 deletions
diff --git a/deluge/ui/web/auth.py b/deluge/ui/web/auth.py
index 0a2ad0ac3..5416b677d 100644
--- a/deluge/ui/web/auth.py
+++ b/deluge/ui/web/auth.py
@@ -19,21 +19,12 @@ from email.utils import formatdate
from twisted.internet.task import LoopingCall
from deluge.common import AUTH_LEVEL_ADMIN, AUTH_LEVEL_NONE
+from deluge.error import NotAuthorizedError
+from deluge.ui.web.json_api import JSONComponent, export
log = logging.getLogger(__name__)
-class AuthError(Exception):
- """
- An exception that might be raised when checking a request for
- authentication.
- """
- pass
-
-# Import after as json_api imports the above AuthError
-from deluge.ui.web.json_api import export, JSONComponent # NOQA, isort:skip pylint: disable=wrong-import-position
-
-
def make_checksum(session_id):
checksum = 0
for value in [ord(char) for char in session_id]:
@@ -226,7 +217,7 @@ class Auth(JSONComponent):
request.session_id = session_id
if auth_level < level:
- raise AuthError('Not authenticated')
+ raise NotAuthorizedError(auth_level, level)
def _change_password(self, new_password):
"""
diff --git a/deluge/ui/web/json_api.py b/deluge/ui/web/json_api.py
index 1ab560d57..0d555218d 100644
--- a/deluge/ui/web/json_api.py
+++ b/deluge/ui/web/json_api.py
@@ -21,8 +21,10 @@ from twisted.internet import defer, reactor
from twisted.internet.defer import Deferred, DeferredList
from twisted.web import http, resource, server
-from deluge import common, component, httpdownloader
+from deluge import component, httpdownloader
+from deluge.common import AUTH_LEVEL_DEFAULT, get_magnet_info, is_magnet
from deluge.configmanager import get_config_dir
+from deluge.error import NotAuthorizedError
from deluge.ui.client import Client, client
from deluge.ui.common import FileTree2, TorrentInfo
from deluge.ui.coreconfig import CoreConfig
@@ -33,9 +35,6 @@ from deluge.ui.web.common import _, compress
log = logging.getLogger(__name__)
-AUTH_LEVEL_DEFAULT = None
-AuthError = None
-
class JSONComponent(component.Component):
def __init__(self, name, interval=1, depend=None):
@@ -55,11 +54,6 @@ def export(auth_level=AUTH_LEVEL_DEFAULT):
:type auth_level: int
"""
- global AUTH_LEVEL_DEFAULT, AuthError
- if AUTH_LEVEL_DEFAULT is None:
- from deluge.common import AUTH_LEVEL_DEFAULT
- from deluge.ui.web.auth import AuthError # NOQA pylint: disable=redefined-outer-name
-
def wrap(func, *args, **kwargs):
func._json_export = True
func._json_auth_level = auth_level
@@ -161,7 +155,7 @@ class JSON(resource.Resource, component.Component):
result = self._exec_remote(method, params, request)
else:
error = {'message': 'Unknown method', 'code': 2}
- except AuthError:
+ except NotAuthorizedError:
error = {'message': 'Not authenticated', 'code': 1}
except Exception as ex:
log.error('Error calling method `%s`: %s', method, ex)
@@ -650,7 +644,7 @@ class WebApi(JSONComponent):
@export
def get_magnet_info(self, uri):
- return common.get_magnet_info(uri)
+ return get_magnet_info(uri)
@export
def add_torrents(self, torrents):
@@ -672,7 +666,7 @@ class WebApi(JSONComponent):
deferreds = []
for torrent in torrents:
- if common.is_magnet(torrent['path']):
+ if is_magnet(torrent['path']):
log.info('Adding torrent from magnet uri `%s` with options `%r`',
torrent['path'], torrent['options'])
d = client.core.add_torrent_magnet(torrent['path'], torrent['options'])