ghinstallation
ghinstallation
提供了Transport
,它实现了http.RoundTripper
接口,用于为GitHub Apps提供安装认证。
这个库旨在为https://github.com/google/go-github或您自己的HTTP客户端提供自动认证。
安装
获取包:
GO111MODULE=on go get -u github.com/bradleyfalzon/ghinstallation/v2
GitHub示例
import "github.com/bradleyfalzon/ghinstallation/v2"
func main() {
// 共享传输以重用TCP连接
tr := http.DefaultTransport
// 包装共享传输,用于应用ID为1,安装ID为99的认证
itr, err := ghinstallation.NewKeyFromFile(tr, 1, 99, "2016-10-19.private-key.pem")
if err != nil {
log.Fatal(err)
}
// 在github.com/google/go-github中使用安装传输
client := github.NewClient(&http.Client{Transport: itr})
}
您也可以使用New()
直接从[]byte
加载密钥。
GitHub Enterprise示例
对于使用GitHub Enterprise的客户端,请按如下方式设置基础URL:
import "github.com/bradleyfalzon/ghinstallation/v2"
const GitHubEnterpriseURL = "https://github.example.com/api/v3"
func main() {
// 共享传输以重用TCP连接
tr := http.DefaultTransport
// 包装共享传输,用于应用ID为1,安装ID为99的认证
itr, err := ghinstallation.NewKeyFromFile(tr, 1, 99, "2016-10-19.private-key.pem")
if err != nil {
log.Fatal(err)
}
itr.BaseURL = GitHubEnterpriseURL
// 在github.com/google/go-github中使用安装传输
client := github.NewEnterpriseClient(GitHubEnterpriseURL, GitHubEnterpriseURL, &http.Client{Transport: itr})
}
什么是应用ID和安装ID
应用ID
是GitHub App ID。
您可以按以下方式查看:
设置 > 开发者 > 设置 > GitHub App > 关于项
安装ID
是WebHook请求的一部分。
您可以通过检查请求获取这个数字。
设置 > 开发者 > 设置 > GitHub Apps > 高级 > 请求选项卡中的有效负载
WebHook请求
...
"installation": {
"id": `安装ID`
}
自定义签名行为
用户可以通过在创建AppsTransport时传入一个Signer实现来自定义签名行为。例如,这可以用于创建由KMS系统中的密钥支持的令牌。
signer := &myCustomSigner{
key: "https://url/to/key/vault",
}
atr := NewAppsTransportWithOptions(http.DefaultTransport, 1, WithSigner(signer))
tr := NewFromAppsTransport(atr, 99)