import asyncio
from livekit import api
from livekit.api.room_service import CreateRoomRequest, ListRoomsRequest

async def main():
    # Instanciar cliente de servidor LiveKit
    # Puedes pasar URL, api_key y api_secret directamente,
    # o establecer variables de entorno LIVEKIT_URL, LIVEKIT_API_KEY, LIVEKIT_API_SECRET
    lkapi = api.LiveKitAPI(
        url="http://localhost:7880",         # URL de tu servidor LiveKit local
        api_key="devkey",                     # tu clave de API
        api_secret="secret",                  # tu secreto
    )

    # 1. Crear una sala
    req = CreateRoomRequest(
        name="mi_sala_prueba",
        empty_timeout=300,         # opcional: cuánto tiempo mantener la sala vacía
        max_participants=10,       # opcional: límite de participantes
        metadata="Sala de prueba desde servidor"
    )
    room = await lkapi.room.create_room(req)
    print("Sala creada:", room.name, " — SID:", room.sid)

    # 2. Listar salas existentes
    list_req = ListRoomsRequest(names=["mi_sala_prueba"])
    rooms_resp = await lkapi.room.list_rooms(list_req)
    print("Salas existentes:", [r.name for r in rooms_resp.rooms])

    # 3. (Opcional) Eliminar sala
    # from livekit.api.room_service import DeleteRoomRequest
    # del_req = DeleteRoomRequest(room="mi_sala_prueba")
    # await lkapi.room.delete_room(del_req)
    # print("Sala eliminada")

    # Cerrar cliente cuando termines
    await lkapi.aclose()

if __name__ == "__main__":
    asyncio.run(main())
