from fastapi import APIRouter, HTTPException
from services.socketService import sio
import qrcode
import io
from fastapi.responses import StreamingResponse

router = APIRouter()

# Function to generate a random session code
def generate_session_code():
    import random
    import string
    return ''.join(random.choices(string.ascii_uppercase + string.digits, k=6))

# Create session endpoint
@router.post("/create_session")
async def create_session():
    session_code = generate_session_code()
    sio.enter_room(sid=session_code, room=session_code)
    return {"session_code": session_code}

# Join session endpoint
@router.post("/join_session")
async def join_session(session_code: str):
    if sio.rooms.get(session_code):
        return {"message": "Joined session successfully"}
    else:
        raise HTTPException(status_code=404, detail="Session not found")

# Generate QR code endpoint
@router.get("/generate_qr/{session_code}")
async def generate_qr(session_code: str):
    qr = qrcode.make(session_code)
    buf = io.BytesIO()
    qr.save(buf)
    buf.seek(0)
    return StreamingResponse(buf, media_type="image/png")