From 46a83d1c23452f74deba3053714a96955cf8a985 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9ophile=20Bastian?= Date: Mon, 14 Aug 2023 09:21:49 +0200 Subject: [PATCH] Add the /plain hook --- signal_webhook/app.py | 21 +++++++++++++++++++++ signal_webhook/signal.py | 2 +- 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/signal_webhook/app.py b/signal_webhook/app.py index 2a80037..1b524d2 100644 --- a/signal_webhook/app.py +++ b/signal_webhook/app.py @@ -53,3 +53,24 @@ def alertmanager(recipient=None): signal.signal_send(recipient_nums, msg) return "OK", 200 + + +@app.route("/plain", methods=["POST"]) +def plain(): + """Send a message through Signal, plain POST args. + + Expects: + * message: plaintext message to be sent; + * recipient: ID of recipient. If absent, default recipient is used. + """ + + if "message" not in request.form: + return "Missing message", 400 + recipient = request.form.get("recipient", configuration.DEFAULT_RECIPIENT) + try: + recipient_num = configuration.RECIPIENTS[recipient] + except KeyError: + return "Unauthorized recipient", 400 + + signal.signal_send(recipient_num, request.form["message"]) + return "OK", 200 diff --git a/signal_webhook/signal.py b/signal_webhook/signal.py index f2df427..497318a 100644 --- a/signal_webhook/signal.py +++ b/signal_webhook/signal.py @@ -5,7 +5,7 @@ from gi.repository.GLib import GError logger = logging.getLogger(__name__) -def signal_send(recipients, message): +def signal_send(recipients: list[str], message: str) -> None: try: bus = SystemBus() signal_bus = bus.get("org.asamk.Signal")