# -*- coding: utf-8 -*-
"""
通用 Internal-Token 认证依赖。

从环境变量 INTERNAL_API_TOKEN 读取期望 token，
供 /api/internal/* 端点使用（不依赖 AIConfig）。
"""

from __future__ import annotations

import os

from fastapi import Header, HTTPException, status


def verify_internal_token(authorization: str = Header(...)) -> str:
    """校验 Internal-Token 认证。

    Header 格式：Authorization: Internal-Token {token}
    """
    prefix = "Internal-Token "
    if not authorization.startswith(prefix):
        raise HTTPException(
            status_code=status.HTTP_401_UNAUTHORIZED,
            detail="无效的认证格式，需要 Internal-Token",
        )

    token = authorization[len(prefix):]
    if not token:
        raise HTTPException(
            status_code=status.HTTP_401_UNAUTHORIZED,
            detail="Token 不能为空",
        )

    expected = os.environ.get("INTERNAL_API_TOKEN", "")
    if not expected:
        raise HTTPException(
            status_code=status.HTTP_500_INTERNAL_SERVER_ERROR,
            detail="INTERNAL_API_TOKEN 未配置",
        )

    if token != expected:
        raise HTTPException(
            status_code=status.HTTP_401_UNAUTHORIZED,
            detail="Token 不匹配",
        )

    return token
