库网络钩子
库网络钩子允许轻松接收和解析GitHub、Bitbucket、GitLab、Docker Hub、Gogs和Azure DevOps的Webhook事件
特性:
- 解析整个有效负载,而不仅仅是几个字段。
- 字段 + 架构与发布的webhook json直接对应
注意:
- 目前仅接受json有效负载。
安装
使用go get。
go get -u github.com/go-playground/webhooks/v6
然后在你的代码中导入包。
import "github.com/go-playground/webhooks/v6"
使用和文档
请查看 http://godoc.org/github.com/go-playground/webhooks/v6 获取详细的使用文档。
示例:
package main
import (
"fmt"
"net/http"
"github.com/go-playground/webhooks/v6/github"
)
const (
path = "/webhooks"
)
func main() {
hook, _ := github.New(github.Options.Secret("MyGitHubSuperSecretSecret...?"))
http.HandleFunc(path, func(w http.ResponseWriter, r *http.Request) {
payload, err := hook.Parse(r, github.ReleaseEvent, github.PullRequestEvent)
if err != nil {
if err == github.ErrEventNotFound {
// 好的,事件不是要求解析的其中一个
}
}
switch payload.(type) {
case github.ReleasePayload:
release := payload.(github.ReleasePayload)
// 从这里开始做你想做的...
fmt.Printf("%+v", release)
case github.PullRequestPayload:
pullRequest := payload.(github.PullRequestPayload)
// 从这里开始做你想做的...
fmt.Printf("%+v", pullRequest)
}
})
http.ListenAndServe(":3000", nil)
}
贡献
欢迎为其他服务提出拉取请求!
如果提议或请求的更改是破坏性的,请创建一个问题进行讨论。
许可证
根据MIT许可证分发,请查看代码中的许可证文件了解更多详情。