You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

27 lines
1.0 KiB
Python

from fastapi import APIRouter, Depends, HTTPException
from sqlmodel import Session, select
from app.core.db import get_session
from app.models import GoogleAccount, AuditLog
from app.google.client import get_service
router = APIRouter()
def get_account(session: Session, email: str) -> GoogleAccount:
acc = session.exec(select(GoogleAccount).where(GoogleAccount.email == email)).first()
if not acc:
raise HTTPException(status_code=404, detail="Cuenta no autorizada. Primero usa /auth/google/start.")
return acc
@router.get("/courses")
def list_courses(account_email: str, session: Session = Depends(get_session)):
acc = get_account(session, account_email)
classroom = get_service("classroom", "v1", acc.token_json)
try:
res = classroom.courses().list(pageSize=20).execute()
session.add(AuditLog(account_email=account_email, action="classroom_courses", detail="ok"))
session.commit()
return res
except Exception as e:
raise HTTPException(status_code=400, detail=str(e))