diff --git a/plugin/api/gui.py b/plugin/api/gui.py index 50e5522..615c05e 100644 --- a/plugin/api/gui.py +++ b/plugin/api/gui.py @@ -30,4 +30,3 @@ def guiBrowse(self, query=None): # browser.onSearchActivated() # # return list(map(int, browser.model.cards)) - diff --git a/plugin/host.py b/plugin/host.py index f53fc76..c8ebd56 100644 --- a/plugin/host.py +++ b/plugin/host.py @@ -46,15 +46,10 @@ class ApiHost: if key != self.key and action != 'requestPermission': raise Exception('valid api key must be provided') - method = None for module in self.modules: for methodName, methodInstance in inspect.getmembers(module, predicate=inspect.ismethod): if methodName == action and getattr(methodInstance, 'api', False): - method = methodInstance - break - - if method: - return {'error': None, 'result': methodInstance(**params)} + return {'error': None, 'result': methodInstance(**params)} else: raise Exception('unsupported action') diff --git a/plugin/settings.py b/plugin/settings.py index 0d1cb4e..20e919d 100644 --- a/plugin/settings.py +++ b/plugin/settings.py @@ -34,9 +34,9 @@ def query(key): raise Exception('setting {} not found'.format(key)) if key == 'webCorsOriginList': - originOld = query('webCorsOrigin') - if originOld: - value.append(originOld) + origin = query('webCorsOrigin') + if origin: + value.append(origin) value += [ 'http://127.0.0.1:', diff --git a/plugin/util.py b/plugin/util.py deleted file mode 100644 index a78fb50..0000000 --- a/plugin/util.py +++ /dev/null @@ -1,131 +0,0 @@ -# Copyright 2016-2021 Alex Yatskov -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - -import os - -import anki -import anki.sync -import aqt -import enum - -# -# Utilities -# - -class MediaType(enum.Enum): - Audio = 1 - Video = 2 - Picture = 3 - - -def download(url): - client = anki.sync.AnkiRequestsClient() - client.timeout = setting('webTimeout') / 1000 - - resp = client.get(url) - if resp.status_code != 200: - raise Exception('{} download failed with return code {}'.format(url, resp.status_code)) - - return client.streamContent(resp) - - -def api(*versions): - def decorator(func): - method = lambda *args, **kwargs: func(*args, **kwargs) - setattr(method, 'versions', versions) - setattr(method, 'api', True) - return method - - return decorator - - -def cardQuestion(card): - if getattr(card, 'question', None) is None: - return card._getQA()['q'] - - return card.question() - - -def cardAnswer(card): - if getattr(card, 'answer', None) is None: - return card._getQA()['a'] - - return card.answer() - - -def setting(key): - defaults = { - 'apiKey': None, - 'apiLogPath': None, - 'apiPollInterval': 25, - 'apiVersion': 6, - 'webBacklog': 5, - 'webBindAddress': os.getenv('ANKICONNECT_BIND_ADDRESS', '127.0.0.1'), - 'webBindPort': 8765, - 'webCorsOrigin': os.getenv('ANKICONNECT_CORS_ORIGIN', None), - 'webCorsOriginList': ['http://localhost'], - 'ignoreOriginList': [], - 'webTimeout': 10000, - } - - try: - return aqt.mw.addonManager.getConfig(__name__).get(key, defaults[key]) - except: - raise Exception(f'setting {key} not found') - - -# -# Anki Helpers -# - -def window(self): - return aqt.mw - - -def reviewer(): - return window().reviewer - - -def collection(self): - return window().col - - -def decks(self): - return collection().decks - - -def scheduler(self): - return collection().sched - - -def database(self): - return collection().db - - -def media(self): - return collection().media - - -def deckNames(): - return decks().allNames() - - -class EditScope: - def __enter__(self): - window().requireReset() - - def __exit__(self): - window().maybeReset() -