| | """
|
| | Admin API endpoints for token management
|
| | """
|
| |
|
| | from fastapi import APIRouter, Depends, HTTPException, status
|
| | from fastapi.security import HTTPBearer
|
| | from fastapi.security.http import HTTPAuthorizationCredentials
|
| | from typing import Dict, Any
|
| |
|
| | from app.core.config import settings
|
| | from app.core.token_manager import token_manager
|
| |
|
| | router = APIRouter(prefix="/admin", tags=["admin"])
|
| | security = HTTPBearer()
|
| |
|
| |
|
| | def verify_admin_token(credentials: HTTPAuthorizationCredentials = Depends(security)) -> str:
|
| | """Verify admin authentication token"""
|
| | if settings.SKIP_AUTH_TOKEN:
|
| | return credentials.credentials
|
| |
|
| | if credentials.credentials != settings.AUTH_TOKEN:
|
| | raise HTTPException(
|
| | status_code=status.HTTP_401_UNAUTHORIZED,
|
| | detail="Invalid authentication credentials",
|
| | headers={"WWW-Authenticate": "Bearer"},
|
| | )
|
| | return credentials.credentials
|
| |
|
| |
|
| | @router.get("/token-stats")
|
| | async def get_token_stats(token: str = Depends(verify_admin_token)) -> Dict[str, Any]:
|
| | """Get token pool statistics"""
|
| | return token_manager.get_token_stats()
|
| |
|
| |
|
| | @router.post("/reload-tokens")
|
| | async def reload_tokens(token: str = Depends(verify_admin_token)) -> Dict[str, str]:
|
| | """Force reload tokens from file"""
|
| | try:
|
| | token_manager.reload_tokens()
|
| | return {"message": "Token池已重新加载"}
|
| | except Exception as e:
|
| | raise HTTPException(
|
| | status_code=status.HTTP_500_INTERNAL_SERVER_ERROR,
|
| | detail=f"重新加载失败: {str(e)}"
|
| | )
|
| |
|
| |
|
| | @router.post("/reset-tokens")
|
| | async def reset_tokens(token: str = Depends(verify_admin_token)) -> Dict[str, str]:
|
| | """Reset all tokens (clear failure counts)"""
|
| | try:
|
| | token_manager.reset_all_tokens()
|
| | return {"message": "所有token状态已重置"}
|
| | except Exception as e:
|
| | raise HTTPException(
|
| | status_code=status.HTTP_500_INTERNAL_SERVER_ERROR,
|
| | detail=f"重置失败: {str(e)}"
|
| | ) |