from fastapi import APIRouter, Depends, HTTPException
from typing import Dict, Any
from mooc.utils.wechat_client import WeChatAPI

router = APIRouter()
wechat_client = WeChatAPI()

@router.get("/access_token")
async def get_access_token() -> Dict[str, Any]:
    """获取微信access token"""
    try:
        access_token = await wechat_client.get_access_token()
        return {"access_token": access_token}
    except Exception as e:
        raise HTTPException(status_code=400, detail=str(e))

@router.post("/code2session")
async def code_to_session(code: str) -> Dict[str, Any]:
    """小程序登录"""
    try:
        result = await wechat_client.code2session(code)
        return result
    except Exception as e:
        raise HTTPException(status_code=400, detail=str(e))

@router.post("/qrcode")
async def generate_qrcode(scene: str) -> bytes:
    """生成小程序码"""
    try:
        qr_code = await wechat_client.get_unlimited_qrcode(scene)
        return qr_code
    except Exception as e:
        raise HTTPException(status_code=400, detail=str(e))

@router.post("/send_template")
async def send_template_message(data: Dict[str, Any]) -> Dict[str, Any]:
    """发送订阅消息"""
    try:
        result = await wechat_client.send_template_message(data)
        return result
    except Exception as e:
        raise HTTPException(status_code=400, detail=str(e))