Add room list & room creation endpoints
This commit is contained in:
parent
2df62ff714
commit
48e3241e8e
1 changed files with 47 additions and 15 deletions
|
@ -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)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue