120 lines
2.7 KiB
Python
120 lines
2.7 KiB
Python
import vona.globals as globals
|
|
import vona.config as config
|
|
|
|
from flask import (
|
|
Blueprint,
|
|
jsonify,
|
|
request,
|
|
)
|
|
|
|
groups = Blueprint("groups", __name__)
|
|
|
|
# This implements the C2S API for groups
|
|
|
|
|
|
@groups.route("/_matrix/client/r0/groups/<group>/self/update_publicity", methods=["PUT"])
|
|
@groups.route("/_matrix/client/r0/groups/<group>/self/accept_invite", methods=["PUT"])
|
|
@groups.route("/_matrix/client/r0/groups/<group>/self/leave", methods=["PUT"])
|
|
@groups.route("/_matrix/client/r0/groups/<group>/admin/users/remove/<user>", methods=["PUT"])
|
|
@groups.route("/_matrix/client/r0/groups/<group>/admin/rooms/<room>", methods=["PUT", "DELETE"])
|
|
async def empty(**k):
|
|
return jsonify({})
|
|
|
|
|
|
@groups.route("/_matrix/client/r0/publicised_groups/<user>")
|
|
@groups.route("/_matrix/client/r0/joined_groups")
|
|
async def joined_groups(user=None):
|
|
return jsonify({
|
|
"groups": [f"+vona:{config.server_name}"]
|
|
})
|
|
|
|
|
|
@groups.route("/_matrix/client/r0/groups/<group>/summary")
|
|
async def summary(group):
|
|
return jsonify({
|
|
"profile": {
|
|
"name": "Vona",
|
|
"short_description": "",
|
|
"long_description": "",
|
|
"avatar_url": "",
|
|
"is_public": 1,
|
|
"is_openly_joinable": True
|
|
},
|
|
"users_section": {
|
|
"users": [],
|
|
"roles": {},
|
|
"total_user_count_estimate": 0
|
|
},
|
|
"rooms_section": {
|
|
"rooms": [],
|
|
"categories": {},
|
|
"total_room_count_estimate": 0
|
|
},
|
|
"user": {
|
|
"membership": "join",
|
|
"is_public": 1,
|
|
"is_privileged": 1,
|
|
"is_publicised": True
|
|
}
|
|
})
|
|
|
|
|
|
@groups.route("/_matrix/client/r0/groups/<group>/rooms")
|
|
async def rooms(group):
|
|
return jsonify({
|
|
"chunk": [],
|
|
"total_room_count_estimate": 0
|
|
})
|
|
|
|
|
|
@groups.route("/_matrix/client/r0/groups/<group>/invited_users")
|
|
async def invited_users(group):
|
|
return jsonify({
|
|
"chunk": [],
|
|
"total_user_count_estimate": 0
|
|
})
|
|
|
|
|
|
@groups.route("/_matrix/client/r0/groups/<group>/users")
|
|
async def users(group):
|
|
return jsonify({
|
|
"chunk": [
|
|
{
|
|
"user_id": f"@vona:{config.server_name}",
|
|
"displayname": "Vona",
|
|
"avatar_url": None,
|
|
"is_public": True,
|
|
"is_privileged": True,
|
|
"attestation": globals.sign_json({
|
|
"group_id": group,
|
|
"user_id": f"@vona:{config.server_name}",
|
|
"valid_until_ms": globals.time()
|
|
})
|
|
}
|
|
],
|
|
"total_user_count_estimate": 1
|
|
})
|
|
|
|
|
|
@groups.route("/_matrix/client/r0/groups/<group>/profile", methods=["GET", "POST"])
|
|
async def profile(group):
|
|
if request.method == "POST":
|
|
return jsonify({})
|
|
|
|
return jsonify({
|
|
"name": "Vona",
|
|
"short_description": "",
|
|
"long_description": "",
|
|
"avatar_url": "",
|
|
"is_public": 1,
|
|
"is_openly_joinable": True
|
|
})
|
|
|
|
|
|
@groups.route("/_matrix/client/r0/create_group", methods=["POST"])
|
|
async def create_group():
|
|
return jsonify({
|
|
"group_id": f"+vona:{config.server_name}"
|
|
})
|
|
|