mirror of
https://github.com/MarioSpore/Grinch-AP.git
synced 2025-10-21 12:11:33 -06:00

* update the id formatter to use staticmethods to not fake the unused self arg, and then use the formatter for the user session endpoints * missed an id (ty treble) * clean up duplicate code * Update WebHostLib/__init__.py Co-authored-by: Aaron Wagener <mmmcheese158@gmail.com> * keep the BaseConverter format * lol, change all the instances * revert this --------- Co-authored-by: Aaron Wagener <mmmcheese158@gmail.com>
44 lines
1.3 KiB
Python
44 lines
1.3 KiB
Python
from typing import Any, Dict
|
|
from uuid import UUID
|
|
|
|
from flask import abort, url_for
|
|
|
|
from WebHostLib import to_url
|
|
import worlds.Files
|
|
from . import api_endpoints, get_players
|
|
from ..models import Room
|
|
|
|
|
|
@api_endpoints.route('/room_status/<suuid:room_id>')
|
|
def room_info(room_id: UUID) -> Dict[str, Any]:
|
|
room = Room.get(id=room_id)
|
|
if room is None:
|
|
return abort(404)
|
|
|
|
def supports_apdeltapatch(game: str) -> bool:
|
|
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)
|
|
|
|
return {
|
|
"tracker": to_url(room.tracker),
|
|
"players": get_players(room.seed),
|
|
"last_port": room.last_port,
|
|
"last_activity": room.last_activity,
|
|
"timeout": room.timeout,
|
|
"downloads": downloads,
|
|
}
|