2020-12-01 00:33:57 +00:00
|
|
|
"""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
|
|
|
|
2024-04-11 03:05:52 +00:00
|
|
|
from flask import Blueprint, abort, url_for
|
2020-12-01 00:51:09 +00:00
|
|
|
|
2024-04-11 03:05:52 +00:00
|
|
|
import worlds.Files
|
2022-10-16 23:08:31 +00:00
|
|
|
from ..models import Room, Seed
|
2020-12-01 00:33:57 +00:00
|
|
|
|
|
|
|
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)
|
2024-04-11 03:05:52 +00:00
|
|
|
|
|
|
|
def supports_apdeltapatch(game: str):
|
|
|
|
return game in worlds.Files.AutoPatchRegister.patch_types
|
|
|
|
downloads = []
|
|
|
|
for slot in sorted(room.seed.slots):
|
|
|
|
if slot.data and not supports_apdeltapatch(slot.game):
|
|
|
|
slot_download = {
|
|
|
|
"slot": slot.player_id,
|
|
|
|
"download": url_for("download_slot_file", room_id=room.id, player_id=slot.player_id)
|
|
|
|
}
|
|
|
|
downloads.append(slot_download)
|
|
|
|
elif slot.data:
|
|
|
|
slot_download = {
|
|
|
|
"slot": slot.player_id,
|
|
|
|
"download": url_for("download_patch", patch_id=slot.id, room_id=room.id)
|
|
|
|
}
|
|
|
|
downloads.append(slot_download)
|
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,
|
2024-04-11 03:05:52 +00:00
|
|
|
"timeout": room.timeout,
|
|
|
|
"downloads": downloads,
|
2022-01-19 17:51:26 +00:00
|
|
|
}
|
2021-07-21 20:55:44 +00:00
|
|
|
|
|
|
|
|
2024-06-08 09:07:14 +00:00
|
|
|
from . import generate, user, datapackage # trigger registration
|