From cd2ba369ae6a39052ef6c12b8eb9a365e907e11a Mon Sep 17 00:00:00 2001 From: n9k Date: Sun, 31 Jul 2022 23:03:47 +0000 Subject: [PATCH] Control socket: reload emotes --- anonstream/control/parse.py | 2 ++ anonstream/control/spec/methods/emote.py | 36 ++++++++++++++++++++++++ anonstream/control/spec/methods/help.py | 1 + 3 files changed, 39 insertions(+) create mode 100644 anonstream/control/spec/methods/emote.py diff --git a/anonstream/control/parse.py b/anonstream/control/parse.py index a567c6d..64419e1 100644 --- a/anonstream/control/parse.py +++ b/anonstream/control/parse.py @@ -5,6 +5,7 @@ from anonstream.control.spec import ParseException, Parsed from anonstream.control.spec.common import Str from anonstream.control.spec.methods.allowedness import SPEC as SPEC_ALLOWEDNESS from anonstream.control.spec.methods.chat import SPEC as SPEC_CHAT +from anonstream.control.spec.methods.emote import SPEC as SPEC_EMOTE from anonstream.control.spec.methods.exit import SPEC as SPEC_EXIT from anonstream.control.spec.methods.help import SPEC as SPEC_HELP from anonstream.control.spec.methods.title import SPEC as SPEC_TITLE @@ -17,6 +18,7 @@ SPEC = Str({ 'chat': SPEC_CHAT, 'user': SPEC_USER, 'allowednesss': SPEC_ALLOWEDNESS, + 'emote': SPEC_EMOTE, }) async def parse(request): diff --git a/anonstream/control/spec/methods/emote.py b/anonstream/control/spec/methods/emote.py new file mode 100644 index 0000000..a529d79 --- /dev/null +++ b/anonstream/control/spec/methods/emote.py @@ -0,0 +1,36 @@ +# SPDX-FileCopyrightText: 2022 n9k +# SPDX-License-Identifier: AGPL-3.0-or-later + +from quart import current_app + +from anonstream.emote import load_emote_schema, BadEmoteName +from anonstream.control.spec.common import Str, End +from anonstream.control.exceptions import CommandFailed + +CONFIG = current_app.config + +async def cmd_emote_help(): + normal = ['emote', 'help'] + response = ( + 'Usage: emote\n' + 'Commands:\n' + ' emote reload......try to reload the emote schema (existing messages are not modified)\n' + ) + return normal, response + +async def cmd_emote_reload(): + try: + emotes = load_emote_schema(app.config['EMOTE_SCHEMA']) + except BadEmoteName as e: + error, *_ = e.args + raise CommandFailed(error) from e + normal = ['emote', 'reload'] + response = '' + return normal, response + +SPEC = Str({ + None: End(cmd_emote_help), + 'help': End(cmd_emote_help), + 'reload': End(cmd_emote_reload), +}) + diff --git a/anonstream/control/spec/methods/help.py b/anonstream/control/spec/methods/help.py index 8a5399f..25071c4 100644 --- a/anonstream/control/spec/methods/help.py +++ b/anonstream/control/spec/methods/help.py @@ -24,6 +24,7 @@ async def cmd_help(): ' allowedness setdefault BOOLEAN.set the default allowedness\n' ' allowedness add SET STRING.....add to the blacklist/whitelist\n' ' allowedness remove SET STRING..remove from the blacklist/whitelist\n' + ' emote reload...................try reloading the emote schema\n' ) return normal, response