"""API endpoints package.""" from typing import List, Tuple from uuid import UUID from flask import Blueprint, abort from .. import cache from ..models import Room, Seed api_endpoints = Blueprint('api', __name__, url_prefix="/api") # 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/') def room_info(room: UUID): room = Room.get(id=room) if room is None: return abort(404) return { "tracker": room.tracker, "players": get_players(room.seed), "last_port": room.last_port, "last_activity": room.last_activity, "timeout": room.timeout } @api_endpoints.route('/datapackage') @cache.cached() def get_datapackage(): from worlds import network_data_package return network_data_package @api_endpoints.route('/datapackage_version') @cache.cached() def get_datapackage_versions(): from worlds import AutoWorldRegister version_package = {game: world.data_version for game, world in AutoWorldRegister.world_types.items()} return version_package @api_endpoints.route('/datapackage_checksum') @cache.cached() def get_datapackage_checksums(): from worlds import network_data_package version_package = { game: game_data["checksum"] for game, game_data in network_data_package["games"].items() } return version_package from . import generate, user # trigger registration