Software /
code /
prosody-modules
Annotate
mod_rest/example/app.py @ 3861:ede3d1724dd1
mod_rest: Attempt to auto-discover data type wanted by callback
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Sat, 25 Jan 2020 20:04:39 +0100 |
parent | 3854:25c34c9f755c |
child | 3863:45b04f05d624 |
rev | line source |
---|---|
3853 | 1 from flask import Flask, Response, request, jsonify |
2 | |
3 app = Flask("echobot") | |
4 | |
5 | |
3861
ede3d1724dd1
mod_rest: Attempt to auto-discover data type wanted by callback
Kim Alvefur <zash@zash.se>
parents:
3854
diff
changeset
|
6 @app.route("/api", methods=["OPTIONS"]) |
ede3d1724dd1
mod_rest: Attempt to auto-discover data type wanted by callback
Kim Alvefur <zash@zash.se>
parents:
3854
diff
changeset
|
7 def options(): |
ede3d1724dd1
mod_rest: Attempt to auto-discover data type wanted by callback
Kim Alvefur <zash@zash.se>
parents:
3854
diff
changeset
|
8 return Response(status=200, headers={"accept": "application/json"}) |
ede3d1724dd1
mod_rest: Attempt to auto-discover data type wanted by callback
Kim Alvefur <zash@zash.se>
parents:
3854
diff
changeset
|
9 |
ede3d1724dd1
mod_rest: Attempt to auto-discover data type wanted by callback
Kim Alvefur <zash@zash.se>
parents:
3854
diff
changeset
|
10 |
3853 | 11 @app.route("/api", methods=["POST"]) |
12 def hello(): | |
13 print(request.data) | |
14 if request.is_json: | |
15 data = request.get_json() | |
16 | |
17 if "kind" not in data: | |
18 return Response(status=400) | |
19 | |
20 if data["kind"] == "message" and "body" in data: | |
21 return jsonify({"body": "Yes this is flask app"}) | |
22 | |
23 elif data["kind"] == "iq" and data["type"] == "get": | |
24 if "ping" in data: | |
25 return Response(status=204) | |
26 | |
27 elif "disco" in data: | |
28 return jsonify( | |
29 { | |
30 "disco": { | |
31 "identities": [ | |
32 { | |
33 "category": "component", | |
34 "type": "generic", | |
35 "name": "Flask app", | |
36 } | |
37 ], | |
38 "features": [ | |
39 "http://jabber.org/protocol/disco#info", | |
40 "http://jabber.org/protocol/disco#items", | |
41 "urn:xmpp:ping", | |
42 ], | |
43 } | |
44 } | |
45 ) | |
46 | |
47 elif "items" in data: | |
48 return jsonify( | |
49 {"items": [{"jid": "example.org", "name": "Example Dot Org"}]} | |
50 ) | |
51 | |
3854
25c34c9f755c
mod_rest: Add mapping of XEP-0092: Software Version
Kim Alvefur <zash@zash.se>
parents:
3853
diff
changeset
|
52 elif "version" in data: |
25c34c9f755c
mod_rest: Add mapping of XEP-0092: Software Version
Kim Alvefur <zash@zash.se>
parents:
3853
diff
changeset
|
53 return jsonify({"version": {"name": "app.py", "version": "0"}}) |
25c34c9f755c
mod_rest: Add mapping of XEP-0092: Software Version
Kim Alvefur <zash@zash.se>
parents:
3853
diff
changeset
|
54 |
3853 | 55 return Response(status=501) |
56 | |
57 | |
58 if __name__ == "__main__": | |
59 app.run() |