Mercurial > prosody-modules
view mod_rest/example/app.py @ 5468:14b5446e22e1
mod_http_oauth2: Fix returning errors from response handlers
This would either redirect the user back to the client along with the
error code, or show the error HTML template.
Previously this would just show some JSON to the user.
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Thu, 18 May 2023 12:57:23 +0200 |
parents | f3fbfde9683d |
children |
line wrap: on
line source
from flask import Flask, Response, request, jsonify app = Flask("echobot") @app.route("/api", methods=["OPTIONS"]) def options(): """ Startup check. Return an appropriate Accept header to confirm the data type to use. """ return Response(status=200, headers={"accept": "application/json"}) @app.route("/api", methods=["POST"]) def hello(): """ Example RESTful JSON format stanza handler. """ print(request.data) if request.is_json: data = request.get_json() if "kind" not in data: return Response(status=400) if data["kind"] == "message" and "body" in data: # Reply to a message return jsonify({"body": "Yes this is flask app"}) elif data["kind"] == "iq" and data["type"] == "get": if "disco" in data: # Return supported features return jsonify( { "disco": { "identities": [ { "category": "component", "type": "generic", "name": "Flask app", } ], "features": [ "http://jabber.org/protocol/disco#info", "http://jabber.org/protocol/disco#items", "jabber:iq:version", "urn:xmpp:ping", ], } } ) elif "items" in data: # Disco items return jsonify( {"items": [{"jid": "example.org", "name": "Example Dot Org"}]} ) elif "version" in data: # Version info return jsonify({"version": {"name": "app.py", "version": "0"}}) elif "ping" in data: # Respond to ping return Response(status=204) return Response(status=501) if __name__ == "__main__": app.run()