ForcePilot/backend/package/yuxi/channels/adapters/msteams/user_agent.py

43 lines
1.1 KiB
Python
Raw Normal View History

"""Microsoft Teams User-Agent 构建模块。
Graph API Bot Framework 请求构建标准 User-Agent
便于追踪和问题排查
"""
from __future__ import annotations
import platform
_USER_AGENT_PRODUCT = "ForcePilot-MSTeams"
_USER_AGENT_VERSION = "1.0.0"
_DEFAULT_USER_AGENT = (
f"{_USER_AGENT_PRODUCT}/{_USER_AGENT_VERSION}"
f" ({platform.system()} {platform.release()}; Python {platform.python_version()})"
)
_HEADER_NAME = "User-Agent"
def build_user_agent(
product: str = _USER_AGENT_PRODUCT,
version: str = _USER_AGENT_VERSION,
extra: str | None = None,
) -> str:
parts = [f"{product}/{version}"]
parts.append(f"({platform.system()} {platform.release()}; Python {platform.python_version()})")
if extra:
parts.append(extra)
return " ".join(parts)
def ensure_user_agent(headers: dict[str, str] | None = None, extra: str | None = None) -> dict[str, str]:
result = dict(headers or {})
result.setdefault(_HEADER_NAME, build_user_agent(extra=extra))
return result
def get_default_user_agent() -> str:
return _DEFAULT_USER_AGENT