ghwebhook

GHWebHook: create a GitHub Web Hook in 5 seconds with Go.

APACHE-2.0 License

Stars
3
Committers
2

GHWebHook

Create a GitHub WebHook in 5 seconds!

Description

  • Default port: 80
  • Default path: /postreceive
  • Default event type: push

Examples

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)
	}
}

References