taolib.github_app.client#
与 GitHub API 交互的异步 HTTP 客户端。
本模块封装 JWT 签发、覆盖头下发与 GitHub REST API 调用,是跨越 令牌管理逻辑与 GitHub 远端服务的唯一负责者。
Classes#
与 GitHub API 直接交互的异步 HTTP 客户端。 |
Module Contents#
- class taolib.github_app.client.GitHubAppClient(app_id: str, private_key: str, api_url: str, transport: httpx.AsyncBaseTransport | None = None)#
与 GitHub API 直接交互的异步 HTTP 客户端。
本类负责 JWT 签发、覆盖头拼装与安装令牌的 HTTP 调用,不参与缓存 与并发控制,后者由
taolib.github_app.token_manager.GitHubInstallationTokenManager负责。初始化客户端。
- 参数:
app_id -- GitHub App 的 App ID。
private_key -- PEM 格式的 RSA 私钥内容。
api_url -- GitHub API 基地址,尾部斜杠会被自动去除。
transport -- 可选的
httpx传输层,测试中可注入 mock。
- static classify_token_kind(token: str) taolib.github_app.models.TokenKind#
根据令牌字符串的前缀与结构特征判定令牌类型。
- 参数:
token -- 安装令牌明文。
- 返回:
以
ghs_开头且后缀含恰好两个.→TokenKind.STATELESS以
ghs_开头但不含两个.→TokenKind.STATEFUL其他 →
TokenKind.UNKNOWN
- async create_installation_token(installation_id: str, strategy: taolib.github_app.models.EffectiveTokenStrategy, permissions: dict[str, str] | None = None, repositories: list[str] | None = None) taolib.github_app.models.InstallationTokenResult#
携带 JWT 与策略覆盖头请求安装令牌。
向
/app/installations/{installation_id}/access_tokens发送POST请求,并将响应转换为InstallationTokenResult。- 参数:
installation_id -- GitHub App 安装实例 ID。
strategy -- 实际生效的令牌策略,决定是否下发覆盖头。
permissions -- 限定令牌能力的权限映射,
None会被平价为空字典。repositories -- 限定令牌可访问的仓库列表,
None会被平价为空列表。
- 返回:
成功创建的
InstallationTokenResult。- 抛出:
GitHubAppClientError -- HTTP 调用失败或返回非 2xx 状态码。
- api_url#
- app_id#
- private_key#