GHWebHook: create a GitHub Web Hook in 5 seconds with Go.
APACHE-2.0 License
Create a GitHub WebHook in 5 seconds!
80
/postreceive
push
Basic:
package main
import (
"log"
"net/url"
"github.com/google/go-github/v62/github"
ghw "github.com/ldez/ghwebhook/v4"
)
func main() {
eventHandlers := ghw.NewEventHandlers().
OnIssuesEvent(func(uri *url.URL, deliveryID string, event *github.IssuesEvent) {
go func() {
log.Println(uri, deliveryID, event.GetAction(), event.Issue)
}()
}).
OnPullRequestEvent(func(uri *url.URL, deliveryID string, event *github.PullRequestEvent) {
log.Println(uri, deliveryID, event.GetAction(), event.GetNumber(), event.PullRequest)
})
webHook := ghw.NewWebHook(eventHandlers, ghw.WithAllEventTypes)
err := webHook.ListenAndServe()
if err != nil {
log.Fatal(err)
}
}
Secured WebHook with custom port and path:
package main
import (
"log"
"net/url"
"github.com/google/go-github/v62/github"
ghw "github.com/ldez/ghwebhook/v4"
"github.com/ldez/ghwebhook/v4/eventtype"
)
func main() {
eventHandlers := ghw.NewEventHandlers().
OnIssuesEvent(func(uri *url.URL, deliveryID string, event *github.IssuesEvent) {
go func() {
log.Println(uri, deliveryID, event.GetAction(), event.Issue)
}()
}).
OnPullRequestEvent(func(uri *url.URL, deliveryID string, event *github.PullRequestEvent) {
log.Println(uri, deliveryID, event.GetAction(), event.GetNumber(), event.PullRequest)
})
webhook := ghw.NewWebHook(
eventHandlers,
ghw.WithPort(5000),
ghw.WithPath("/github"),
ghw.WithSecret("SECRET"),
ghw.Debug,
ghw.WithEventTypes(eventtype.Issues, eventtype.PullRequest))
err := webhook.ListenAndServe()
if err != nil {
log.Fatal(err)
}
}