https://github.com/ldez/ghwebhook
GHWebHook: create a GitHub Web Hook in 5 seconds with Go.
https://github.com/ldez/ghwebhook
github golang webhooks
Last synced: 12 months ago
JSON representation
GHWebHook: create a GitHub Web Hook in 5 seconds with Go.
- Host: GitHub
- URL: https://github.com/ldez/ghwebhook
- Owner: ldez
- License: apache-2.0
- Created: 2017-08-06T17:34:42.000Z (over 8 years ago)
- Default Branch: main
- Last Pushed: 2025-02-09T23:49:20.000Z (about 1 year ago)
- Last Synced: 2025-05-07T03:45:05.338Z (12 months ago)
- Topics: github, golang, webhooks
- Language: Go
- Homepage: https://pkg.go.dev/github.com/ldez/ghwebhook/v4
- Size: 140 KB
- Stars: 3
- Watchers: 2
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: readme.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
README
# GHWebHook
[](https://github.com/ldez/ghwebhook/releases)
[](https://github.com/ldez/ghwebhook/actions)
[](https://pkg.go.dev/github.com/ldez/ghwebhook/v4)
[](https://github.com/sponsors/ldez)
Create a GitHub WebHook in 5 seconds!
## Description
- Default port: `80`
- Default path: `/postreceive`
- Default event type: `push`
## Examples
Basic:
```go
package main
import (
"log"
"net/url"
"github.com/google/go-github/v69/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:
```go
package main
import (
"log"
"net/url"
"github.com/google/go-github/v69/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)
}
}
```
## References
- https://docs.github.com/en/developers/webhooks-and-events/webhooks/about-webhooks
- https://docs.github.com/en/developers/webhooks-and-events/webhooks/securing-your-webhooks
- https://docs.github.com/en/developers/webhooks-and-events/webhooks/webhook-events-and-payloads