diff --git a/vona/custom/__init__.py b/vona/custom/__init__.py index dcaa6d6..84fec9b 100644 --- a/vona/custom/__init__.py +++ b/vona/custom/__init__.py @@ -2,10 +2,9 @@ from flask import Blueprint custom = Blueprint("custom", __name__) -# This implements custom endpoints -# used by other homeserver -# implementations. They do not start -# with /_matrix/ +# This implements non-standard +# endpoints created by other +# homeserver implementations. from .hammerhead import hammerhead @@ -13,9 +12,11 @@ from .conduwuit import conduwuit from .dendrite import dendrite from .telodendria import telo from .synapse import synapse +from .citadel import citadel custom.register_blueprint(hammerhead) custom.register_blueprint(conduwuit) custom.register_blueprint(dendrite) custom.register_blueprint(synapse) +custom.register_blueprint(citadel) custom.register_blueprint(telo) diff --git a/vona/custom/citadel.py b/vona/custom/citadel.py new file mode 100644 index 0000000..0aa392e --- /dev/null +++ b/vona/custom/citadel.py @@ -0,0 +1,61 @@ +from flask import Blueprint, jsonify, request +import vona.config as config +import base64 +import os + +citadel = Blueprint("citadel", __name__) + +# These are endpoints made by Thales Citadel + +# TODO: Add more endpoints, this likely +# isn't all of them + + +@citadel.route("/_matrix/client/r0/citadel/stats/m.news/", methods=["GET", "PUT"]) +async def news_stats(event): + if request.method == "PUT": + return jsonify({"success": True}) + + return jsonify({ + "total_clicks": config.the_funny_number, + "user_readings": config.the_funny_number + }) + + +@citadel.route("/_matrix/client/r0/citadel/rooms//closeRoom", methods=["POST"]) +async def close_room(room): + store_response = request.json.get("store_response", True) + + operation_id = base64.b64encode( + bytes( + os.urandom(8).hex(), + "utf-8" + ) + ).decode("utf-8")[:14] + + + if store_response: + resp = {"operation_id": operation_id} + else: + resp = { + "operation_id": operation_id, + "previous_state": { + "progress": { + "steps": { + "step_kick_users": { + "status": "complete" + }, + "step_purge_history": { + "status": "complete" + }, + "step_purge_media": { + "status": "complete" + } + } + }, + "status": "complete" + } + } + + + return jsonify(resp)