WebHost: fix /api/room_info

This commit is contained in:
Fabian Dill 2022-01-19 18:51:26 +01:00
parent 238e2d0280
commit ab4fb6e69c
2 changed files with 15 additions and 8 deletions

View File

@ -1,9 +1,10 @@
"""API endpoints package.""" """API endpoints package."""
from uuid import UUID from uuid import UUID
from typing import List, Tuple
from flask import Blueprint, abort from flask import Blueprint, abort
from ..models import Room from ..models import Room, Seed
from .. import cache from .. import cache
api_endpoints = Blueprint('api', __name__, url_prefix="/api") api_endpoints = Blueprint('api', __name__, url_prefix="/api")
@ -13,16 +14,22 @@ from . import generate, user # trigger registration
# unsorted/misc endpoints # unsorted/misc endpoints
def get_players(seed: Seed) -> List[Tuple[str, str]]:
return [(slot.player_name, slot.game) for slot in seed.slots]
@api_endpoints.route('/room_status/<suuid:room>') @api_endpoints.route('/room_status/<suuid:room>')
def room_info(room: UUID): def room_info(room: UUID):
room = Room.get(id=room) room = Room.get(id=room)
if room is None: if room is None:
return abort(404) return abort(404)
return {"tracker": room.tracker, return {
"players": room.seed.multidata["names"], "tracker": room.tracker,
"last_port": room.last_port, "players": get_players(room.seed),
"last_activity": room.last_activity, "last_port": room.last_port,
"timeout": room.timeout} "last_activity": room.last_activity,
"timeout": room.timeout
}
@api_endpoints.route('/datapackage') @api_endpoints.route('/datapackage')

View File

@ -1,7 +1,7 @@
from flask import session, jsonify from flask import session, jsonify
from WebHostLib.models import * from WebHostLib.models import *
from . import api_endpoints from . import api_endpoints, get_players
@api_endpoints.route('/get_rooms') @api_endpoints.route('/get_rooms')
@ -27,6 +27,6 @@ def get_seeds():
response.append({ response.append({
"seed_id": seed.id, "seed_id": seed.id,
"creation_time": seed.creation_time, "creation_time": seed.creation_time,
"players": [(slot.player_name, slot.game) for slot in seed.slots], "players": get_players(seed.slots),
}) })
return jsonify(response) return jsonify(response)