Archipelago/WebHostLib/api/__init__.py

60 lines
1.5 KiB
Python
Raw Normal View History

"""API endpoints package."""
2022-01-19 17:51:26 +00:00
from typing import List, Tuple
2022-10-16 23:08:31 +00:00
from uuid import UUID
2020-12-01 00:51:09 +00:00
from flask import Blueprint, abort
2021-07-21 20:55:44 +00:00
from .. import cache
2022-10-16 23:08:31 +00:00
from ..models import Room, Seed
api_endpoints = Blueprint('api', __name__, url_prefix="/api")
2020-12-01 00:51:09 +00:00
# unsorted/misc endpoints
2021-07-21 20:55:44 +00:00
2022-01-19 17:51:26 +00:00
def get_players(seed: Seed) -> List[Tuple[str, str]]:
return [(slot.player_name, slot.game) for slot in seed.slots]
2020-12-01 00:51:09 +00:00
@api_endpoints.route('/room_status/<suuid:room>')
def room_info(room: UUID):
room = Room.get(id=room)
if room is None:
return abort(404)
2022-01-19 17:51:26 +00:00
return {
"tracker": room.tracker,
"players": get_players(room.seed),
"last_port": room.last_port,
"last_activity": room.last_activity,
"timeout": room.timeout
}
2021-07-21 20:55:44 +00:00
@api_endpoints.route('/datapackage')
@cache.cached()
2022-08-10 22:58:08 +00:00
def get_datapackage():
2021-07-21 20:55:44 +00:00
from worlds import network_data_package
return network_data_package
@api_endpoints.route('/datapackage_version')
@cache.cached()
2022-08-10 22:58:08 +00:00
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