"""
=========================================
CV6 AI Trading OS
Dependencies
=========================================
"""

from fastapi import Depends, HTTPException
from fastapi.security import HTTPBearer, HTTPAuthorizationCredentials
from jose import JWTError

from app.core.auth import verify_token

security = HTTPBearer()


async def get_current_user(
    credentials: HTTPAuthorizationCredentials = Depends(security)
):
    """Async so FastAPI runs it directly in the event loop — never blocks anyio's thread pool."""
    token = credentials.credentials
    try:
        payload = verify_token(token)
        return payload
    except JWTError:
        raise HTTPException(
            status_code=401,
            detail="Invalid or Expired Token"
        )