From cdb4a8aeb91d959accfb40d3e9f7dfa406417d83 Mon Sep 17 00:00:00 2001 From: Yannik Schmidt Date: Sun, 3 Nov 2024 14:11:12 +0100 Subject: [PATCH] feat: implement substitution map --- .gitignore | 2 ++ server/interface.py | 18 ++++++++++++++++-- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index 4612022..bcf4ad9 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,5 @@ instance/ __pycache__/ signal_targets.txt sqlite.db +substitutions.yaml +test.env diff --git a/server/interface.py b/server/interface.py index 2b3c354..702d769 100755 --- a/server/interface.py +++ b/server/interface.py @@ -27,6 +27,13 @@ db = SQLAlchemy(app) BAD_DISPATCH_ACCESS_TOKEN = "Invalid or missing dispatch-access-token parameter in URL" +def _apply_substitution(string): + + for replace, match in app.config["SUBSTITUTIONS"].items(): + string = string.replace(match, replace) + + return string + class WebHookPaths(db.Model): __tablename__ = "webhook_paths" @@ -85,8 +92,8 @@ class DispatchObject(db.Model): "timestamp" : self.timestamp, "phone" : self.phone, "email" : self.email, - "title" : self.title, - "message" : self.message, + "title" : _apply_substitution(self.title), + "message" : _apply_substitution(self.message), "uuid" : self.dispatch_secret, "method" : self.method, "error" : self.dispatch_error, @@ -414,6 +421,13 @@ def create_app(): app.config["SETTINGS_ACCESS_TOKEN"] = os.environ["SETTINGS_ACCESS_TOKEN"] app.config["DISPATCH_ACCESS_TOKEN"] = os.environ["DISPATCH_ACCESS_TOKEN"] + substitution_config_file = app.config.get("SUBSTITUTION_MAP") or "substitutions.yaml" + app.config["SUBSTITUTIONS"] = {} + if os.path.isfile(substitution_config_file): + with open(substitution_config_file) as f: + app.config["SUBSTITUTIONS"] = yaml.safe_load(f) + + if __name__ == "__main__": parser = argparse.ArgumentParser(description='Simple Telegram Notification Interface',