from fastapi import FastAPI, Depends, HTTPException, Request from fastapi.responses import RedirectResponse, JSONResponse from app.cabletv.utils.auth import get_current_user, exchange_code_for_token app = FastAPI() @app.get("/") async def root(): return {"message": "IPTV Updater API"} @app.get("/protected") async def protected_route(request: Request, user = Depends(get_current_user)): if isinstance(user, RedirectResponse): return user return {"message": "Protected content", "user": user['Username']} @app.get("/auth/callback") async def auth_callback(request: Request, code: str): try: redirect_uri = str(request.base_url) tokens = exchange_code_for_token(code, redirect_uri) response = JSONResponse(content={ "message": "Authentication successful", "id_token": tokens["id_token"] }) response.set_cookie( key="token", value=tokens["id_token"], httponly=True, secure=True, samesite="lax" ) return response except Exception as e: raise HTTPException( status_code=400, detail=f"Authentication failed: {str(e)}" )