Spaces:
Sleeping
Sleeping
Update main.py
Browse files
main.py
CHANGED
@@ -16,28 +16,28 @@ class Mensaje(BaseModel):
|
|
16 |
class Jugador(BaseModel):
|
17 |
nombre: str
|
18 |
|
19 |
-
class CrearSala(BaseModel):
|
20 |
-
nombre_sala: str
|
21 |
-
|
22 |
@app.post("/sala")
|
23 |
-
def crear_sala(
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
|
|
|
|
|
|
29 |
|
30 |
@app.post("/sala/{sala_id}/registrar")
|
31 |
def registrar_usuario(sala_id: str, jugador: Jugador):
|
32 |
if sala_id not in salas:
|
33 |
raise HTTPException(status_code=404, detail="Sala no encontrada")
|
|
|
34 |
if len(salas[sala_id]["jugadores"]) >= 4:
|
35 |
-
raise HTTPException(status_code=
|
|
|
36 |
usuario_id = str(uuid.uuid4())
|
37 |
salas[sala_id]["jugadores"][usuario_id] = jugador.nombre
|
38 |
-
|
39 |
-
posicion = len(salas[sala_id]["orden"]) - 1
|
40 |
-
return {"usuario_id": usuario_id, "nombre": jugador.nombre, "posicion": posicion}
|
41 |
|
42 |
@app.post("/sala/{sala_id}/mensaje")
|
43 |
def enviar_mensaje(sala_id: str, mensaje: Mensaje):
|
@@ -45,25 +45,27 @@ def enviar_mensaje(sala_id: str, mensaje: Mensaje):
|
|
45 |
raise HTTPException(status_code=404, detail="Sala no encontrada")
|
46 |
if mensaje.usuario_id not in salas[sala_id]["jugadores"]:
|
47 |
raise HTTPException(status_code=403, detail="Usuario no registrado en la sala")
|
|
|
48 |
nombre = salas[sala_id]["jugadores"][mensaje.usuario_id]
|
49 |
-
salas[sala_id]["mensajes"].append({
|
|
|
|
|
|
|
50 |
return {"ok": True}
|
51 |
|
52 |
@app.get("/sala/{sala_id}/mensajes")
|
53 |
-
def obtener_mensajes(sala_id: str
|
54 |
if sala_id not in salas:
|
55 |
raise HTTPException(status_code=404, detail="Sala no encontrada")
|
56 |
-
|
57 |
-
if desde < 0 or desde > len(mensajes):
|
58 |
-
raise HTTPException(status_code=400, detail="ID de mensaje fuera de rango")
|
59 |
-
return {
|
60 |
-
"desde": desde,
|
61 |
-
"hasta": len(mensajes),
|
62 |
-
"mensajes": mensajes[desde:]
|
63 |
-
}
|
64 |
|
65 |
@app.get("/sala/{sala_id}/jugadores")
|
66 |
def obtener_jugadores(sala_id: str):
|
67 |
if sala_id not in salas:
|
68 |
raise HTTPException(status_code=404, detail="Sala no encontrada")
|
69 |
-
|
|
|
|
|
|
|
|
|
|
|
|
16 |
class Jugador(BaseModel):
|
17 |
nombre: str
|
18 |
|
|
|
|
|
|
|
19 |
@app.post("/sala")
|
20 |
+
def crear_sala():
|
21 |
+
while True:
|
22 |
+
nueva_id = str(uuid.uuid4())[:8]
|
23 |
+
if nueva_id not in salas:
|
24 |
+
salas[nueva_id] = {
|
25 |
+
"mensajes": [],
|
26 |
+
"jugadores": {}
|
27 |
+
}
|
28 |
+
return {"ok": True, "sala_id": nueva_id}
|
29 |
|
30 |
@app.post("/sala/{sala_id}/registrar")
|
31 |
def registrar_usuario(sala_id: str, jugador: Jugador):
|
32 |
if sala_id not in salas:
|
33 |
raise HTTPException(status_code=404, detail="Sala no encontrada")
|
34 |
+
|
35 |
if len(salas[sala_id]["jugadores"]) >= 4:
|
36 |
+
raise HTTPException(status_code=409, detail="Sala llena")
|
37 |
+
|
38 |
usuario_id = str(uuid.uuid4())
|
39 |
salas[sala_id]["jugadores"][usuario_id] = jugador.nombre
|
40 |
+
return {"usuario_id": usuario_id, "nombre": jugador.nombre}
|
|
|
|
|
41 |
|
42 |
@app.post("/sala/{sala_id}/mensaje")
|
43 |
def enviar_mensaje(sala_id: str, mensaje: Mensaje):
|
|
|
45 |
raise HTTPException(status_code=404, detail="Sala no encontrada")
|
46 |
if mensaje.usuario_id not in salas[sala_id]["jugadores"]:
|
47 |
raise HTTPException(status_code=403, detail="Usuario no registrado en la sala")
|
48 |
+
|
49 |
nombre = salas[sala_id]["jugadores"][mensaje.usuario_id]
|
50 |
+
salas[sala_id]["mensajes"].append({
|
51 |
+
"usuario": nombre,
|
52 |
+
"texto": mensaje.texto
|
53 |
+
})
|
54 |
return {"ok": True}
|
55 |
|
56 |
@app.get("/sala/{sala_id}/mensajes")
|
57 |
+
def obtener_mensajes(sala_id: str):
|
58 |
if sala_id not in salas:
|
59 |
raise HTTPException(status_code=404, detail="Sala no encontrada")
|
60 |
+
return salas[sala_id]["mensajes"]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
61 |
|
62 |
@app.get("/sala/{sala_id}/jugadores")
|
63 |
def obtener_jugadores(sala_id: str):
|
64 |
if sala_id not in salas:
|
65 |
raise HTTPException(status_code=404, detail="Sala no encontrada")
|
66 |
+
|
67 |
+
jugadores = [
|
68 |
+
{"posicion": idx, "nombre": nombre}
|
69 |
+
for idx, (_, nombre) in enumerate(salas[sala_id]["jugadores"].items())
|
70 |
+
]
|
71 |
+
return jugadores
|