diff options
author | Jonathan Weth <mail@jonathanweth.de> | 2020-07-27 11:26:05 +0200 |
---|---|---|
committer | Jonathan Weth <mail@jonathanweth.de> | 2020-07-27 11:26:05 +0200 |
commit | c8c3a75c6b78d1d955cd9de43538b8bee73a3609 (patch) | |
tree | 8f22c458ef4e48c3da9ea5fa5c53c3aff4dfd71d /trigger.py | |
parent | 4db238a1395b33e76711d310f92090f803af41d4 (diff) | |
parent | 7c8f259f9b7523f5fc79d22c0eeab5226b3e1076 (diff) | |
download | RWA.Support.SessionService-c8c3a75c6b78d1d955cd9de43538b8bee73a3609.tar.gz RWA.Support.SessionService-c8c3a75c6b78d1d955cd9de43538b8bee73a3609.tar.bz2 RWA.Support.SessionService-c8c3a75c6b78d1d955cd9de43538b8bee73a3609.zip |
Merge branch '4-provide-global-trigger-service-for-all-sessions' into 'master'
Resolve "Provide global trigger service (for all sessions)"
Closes #4
See merge request remotewebapp/session-service!4
Diffstat (limited to 'trigger.py')
-rw-r--r-- | trigger.py | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/trigger.py b/trigger.py new file mode 100644 index 0000000..a7fb66c --- /dev/null +++ b/trigger.py @@ -0,0 +1,36 @@ +import threading +from typing import Any, Callable +from wsgiref.simple_server import make_server + +import port_for +from flask import Flask, abort, request + + +class TriggerServerThread(threading.Thread): + """Simple Flask server (wrapped as thread) for triggering actions on sesssions.""" + + def __init__(self, trigger_method: Callable[[str], Any]): + super().__init__() + self.port = port_for.select_random() + + app = Flask(__name__) + + @app.route("/", methods=["POST"]) + def trigger(): + json = request.json + token = json.get("token", "") + r = trigger_method(token) + if r: + return "Successful triggered" + else: + return abort(403) + + self.srv = make_server("127.0.0.1", self.port, app) + self.ctx = app.app_context() + self.ctx.push() + + def run(self): + self.srv.serve_forever() + + def shutdown(self): + self.srv.shutdown() |