2020-12-01 01:33:57 +01:00
|
|
|
"""API endpoints package."""
|
2022-01-19 18:51:26 +01:00
|
|
|
from typing import List, Tuple
|
2022-10-17 01:08:31 +02:00
|
|
|
from uuid import UUID
|
2020-12-01 01:51:09 +01:00
|
|
|
|
|
|
|
from flask import Blueprint, abort
|
|
|
|
|
2021-07-21 22:55:44 +02:00
|
|
|
from .. import cache
|
2022-10-17 01:08:31 +02:00
|
|
|
from ..models import Room, Seed
|
2020-12-01 01:33:57 +01:00
|
|
|
|
|
|
|
api_endpoints = Blueprint('api', __name__, url_prefix="/api")
|
|
|
|
|
2020-12-01 01:51:09 +01:00
|
|
|
# unsorted/misc endpoints
|
|
|
|
|
2021-07-21 22:55:44 +02:00
|
|
|
|
2022-01-19 18:51:26 +01:00
|
|
|
def get_players(seed: Seed) -> List[Tuple[str, str]]:
|
|
|
|
return [(slot.player_name, slot.game) for slot in seed.slots]
|
|
|
|
|
|
|
|
|
2020-12-01 01:51:09 +01: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 18:51:26 +01: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 22:55:44 +02:00
|
|
|
|
|
|
|
|
|
|
|
@api_endpoints.route('/datapackage')
|
|
|
|
@cache.cached()
|
2022-08-11 00:58:08 +02:00
|
|
|
def get_datapackage():
|
2021-07-21 22:55:44 +02:00
|
|
|
from worlds import network_data_package
|
|
|
|
return network_data_package
|
2021-07-21 23:04:22 +02:00
|
|
|
|
2022-01-07 03:32:51 +01:00
|
|
|
|
2021-07-21 23:04:22 +02:00
|
|
|
@api_endpoints.route('/datapackage_version')
|
|
|
|
@cache.cached()
|
2022-08-11 00:58:08 +02:00
|
|
|
def get_datapackage_versions():
|
2021-07-21 23:04:22 +02:00
|
|
|
from worlds import network_data_package, AutoWorldRegister
|
|
|
|
version_package = {game: world.data_version for game, world in AutoWorldRegister.world_types.items()}
|
|
|
|
version_package["version"] = network_data_package["version"]
|
|
|
|
return version_package
|
2022-01-21 00:42:45 +01:00
|
|
|
|
|
|
|
|
|
|
|
from . import generate, user # trigger registration
|