Add room list & room creation endpoints

This commit is contained in:
Leonardo Segala 2025-08-01 22:32:44 +02:00
parent 2df62ff714
commit 48e3241e8e

View file

@ -1,6 +1,5 @@
import dotenv
from flask import Flask, Response, jsonify, request
from flask_cors import CORS
from flask_socketio import SocketIO, emit
@ -18,19 +17,7 @@ socketio = SocketIO(app)
CORS(app)
ROOMS: dict[int, Room] = {
1234: Room(
1234,
(0.0, 1.0),
"Test Room",
None,
{"Rock", "Metal"},
{},
[],
[Song(mbid="test", title="<title placeholder>", artist="<artist placeholder>", tags=["Metal"], image_id="img-id", youtube_id="yt-id")],
playing_idx=1,
)
} # { room_id: room, ... }
ROOMS: dict[int, Room] = {} # { room_id: room, ... }
def error(msg: str, status: int = 400) -> Response:
@ -83,11 +70,56 @@ def queue_next():
# room.renew_queue()
emit("update_songs", {"songs": [1, 2, 3]}, broadcast=True, namespace="/")
return {"success": True, "ended": True, "index": room.playing_idx, "queue": []}
return {"success": True, "ended": True, "index": room.playing_idx, "queue": room.playing}
return {"success": True, "ended": False, "index": room.playing_idx}
@app.post("/api/room/new")
def room_new():
if (room_name := request.args.get("name")) is None:
return error("Missing room name")
if (room_cords := request.args.get("coords")) is None:
return error("Missing room coords")
if room_pin := request.args.get("pin"):
room_pin = int(room_pin)
else:
room_pin = None
lat, lon = room_cords.split(",")
room = Room(
id=max(ROOMS or [0]) + 1, #
coord=(float(lat), float(lon)),
name=room_name,
pin=room_pin,
tags=set([tag for tag in request.args.get("tags", "").split(",") if tag]),
songs={},
history=[],
playing=[],
playing_idx=-1,
)
ROOMS[room.id] = room
return {"success": True, "room_id": room.id}
@app.get("/api/room")
def room():
return [
{
"id": room.id,
"name": room.name,
"private": room.pin is not None,
"coords": room.coord,
}
for room in ROOMS.values()
]
init_db()
if __name__ == "__main__":
socketio.run(app, debug=True)