Spaces:
Sleeping
Sleeping
| from fastapi import FastAPI, HTTPException | |
| from pydantic import BaseModel | |
| from typing import Dict, List | |
| import uuid | |
| app = FastAPI() | |
| # Estructura de datos en memoria | |
| salas: Dict[str, Dict] = {} | |
| # Modelos de datos | |
| class Mensaje(BaseModel): | |
| usuario_id: str | |
| texto: str | |
| class Jugador(BaseModel): | |
| nombre: str | |
| def crear_sala(): | |
| while True: | |
| nueva_id = str(uuid.uuid4())[:8] | |
| if nueva_id not in salas: | |
| salas[nueva_id] = {"mensajes": [], "jugadores": {}} | |
| return {"sala_id": nueva_id} | |
| def registrar_usuario(sala_id: str, jugador: Jugador): | |
| if sala_id not in salas: | |
| raise HTTPException(status_code=404, detail="Sala no encontrada") | |
| usuario_id = str(uuid.uuid4()) | |
| salas[sala_id]["jugadores"][usuario_id] = jugador.nombre | |
| return {"usuario_id": usuario_id, "nombre": jugador.nombre} | |
| def enviar_mensaje(sala_id: str, mensaje: Mensaje): | |
| if sala_id not in salas: | |
| raise HTTPException(status_code=404, detail="Sala no encontrada") | |
| if mensaje.usuario_id not in salas[sala_id]["jugadores"]: | |
| raise HTTPException(status_code=403, detail="Usuario no registrado en la sala") | |
| nombre = salas[sala_id]["jugadores"][mensaje.usuario_id] | |
| salas[sala_id]["mensajes"].append({"usuario": nombre, "texto": mensaje.texto}) | |
| return {"ok": True} | |
| def obtener_mensajes(sala_id: str): | |
| if sala_id not in salas: | |
| raise HTTPException(status_code=404, detail="Sala no encontrada") | |
| return salas[sala_id]["mensajes"] | |
| def obtener_jugadores(sala_id: str): | |
| if sala_id not in salas: | |
| raise HTTPException(status_code=404, detail="Sala no encontrada") | |
| return list(salas[sala_id]["jugadores"].values()) | |