DauroCamilo commited on
Commit
1f2a0ba
·
verified ·
1 Parent(s): ca60809

Upload 2 files

Browse files
Files changed (2) hide show
  1. main.py +55 -0
  2. requirements.txt +7 -0
main.py ADDED
@@ -0,0 +1,55 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from fastapi import FastAPI, HTTPException
2
+ from pydantic import BaseModel
3
+ from typing import Dict, List
4
+ import uuid
5
+
6
+ app = FastAPI()
7
+
8
+ # Estructura de datos en memoria
9
+ salas: Dict[str, Dict] = {}
10
+
11
+ # Modelos de datos
12
+ class Mensaje(BaseModel):
13
+ usuario_id: str
14
+ texto: str
15
+
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] = {"mensajes": [], "jugadores": {}}
25
+ return {"sala_id": nueva_id}
26
+
27
+ @app.post("/sala/{sala_id}/registrar")
28
+ def registrar_usuario(sala_id: str, jugador: Jugador):
29
+ if sala_id not in salas:
30
+ raise HTTPException(status_code=404, detail="Sala no encontrada")
31
+ usuario_id = str(uuid.uuid4())
32
+ salas[sala_id]["jugadores"][usuario_id] = jugador.nombre
33
+ return {"usuario_id": usuario_id, "nombre": jugador.nombre}
34
+
35
+ @app.post("/sala/{sala_id}/mensaje")
36
+ def enviar_mensaje(sala_id: str, mensaje: Mensaje):
37
+ if sala_id not in salas:
38
+ raise HTTPException(status_code=404, detail="Sala no encontrada")
39
+ if mensaje.usuario_id not in salas[sala_id]["jugadores"]:
40
+ raise HTTPException(status_code=403, detail="Usuario no registrado en la sala")
41
+ nombre = salas[sala_id]["jugadores"][mensaje.usuario_id]
42
+ salas[sala_id]["mensajes"].append({"usuario": nombre, "texto": mensaje.texto})
43
+ return {"ok": True}
44
+
45
+ @app.get("/sala/{sala_id}/mensajes")
46
+ def obtener_mensajes(sala_id: str):
47
+ if sala_id not in salas:
48
+ raise HTTPException(status_code=404, detail="Sala no encontrada")
49
+ return salas[sala_id]["mensajes"]
50
+
51
+ @app.get("/sala/{sala_id}/jugadores")
52
+ def obtener_jugadores(sala_id: str):
53
+ if sala_id not in salas:
54
+ raise HTTPException(status_code=404, detail="Sala no encontrada")
55
+ return list(salas[sala_id]["jugadores"].values())
requirements.txt ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
 
1
+ fastapi
2
+ uvicorn
3
+ transformers
4
+ torch
5
+ protobuf==3.20.*
6
+ accelerate>=0.26.0
7
+ bitsandbytes