modulepackage
2.1.0
Repository: https://github.com/flc1125/go-gitlab-webhook.git
Documentation: pkg.go.dev
# README
Gitlab Webhook Dispatcher 🚀
This is a simple webhook dispatcher for Gitlab. It listens for incoming webhooks and dispatches them to the appropriate handler.
✨ Features
- 📋 Very convenient registration of listeners
- 🔄 A single listener can implement multiple different webhook functions
- âš¡ Support asynchronous and efficient processing
- 🚀 Multiple dispatch methods
📦 Installation
go get github.com/flc1125/go-gitlab-webhook/v2
💻 Usage
package main
import (
"context"
"net/http"
"github.com/flc1125/go-gitlab-webhook/v2"
"gitlab.com/gitlab-org/api/client-go"
)
var (
_ gitlabwebhook.BuildListener = (*testBuildListener)(nil)
_ gitlabwebhook.CommitCommentListener = (*testCommitCommentListener)(nil)
_ gitlabwebhook.BuildListener = (*testBuildAndCommitCommentListener)(nil)
_ gitlabwebhook.CommitCommentListener = (*testBuildAndCommitCommentListener)(nil)
)
type testBuildListener struct{}
func (l *testBuildListener) OnBuild(ctx context.Context, event *gitlab.BuildEvent) error {
// do something
return nil
}
type testCommitCommentListener struct{}
func (l *testCommitCommentListener) OnCommitComment(ctx context.Context, event *gitlab.CommitCommentEvent) error {
// do something
return nil
}
type testBuildAndCommitCommentListener struct{}
func (l *testBuildAndCommitCommentListener) OnBuild(ctx context.Context, event *gitlab.BuildEvent) error {
// do something
return nil
}
func (l *testBuildAndCommitCommentListener) OnCommitComment(ctx context.Context, event *gitlab.CommitCommentEvent) error {
// do something
return nil
}
func main() {
dispatcher := gitlabwebhook.NewDispatcher(
gitlabwebhook.RegisterListeners(
&testBuildListener{},
&testCommitCommentListener{},
&testBuildAndCommitCommentListener{},
),
)
dispatcher.RegisterListeners(
&testBuildListener{},
&testCommitCommentListener{},
&testBuildAndCommitCommentListener{},
)
http.Handle("/webhook", http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
if err := dispatcher.DispatchRequest(r,
gitlabwebhook.DispatchRequestWithContext(context.Background()), // custom context
); err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
w.WriteHeader(http.StatusNoContent)
}))
if err := http.ListenAndServe(":8080", nil); err != nil {
panic(err)
}
}
📜 License
MIT License. See LICENSE for the full license text.
💖 Thanks
- gitlab-org/api/client-go(Formerly known as: xanzy/go-gitlab): Go library for accessing the GitLab API
- stretchr/testify: A toolkit with common assertions and mocks that plays nicely with the standard library
# Functions
No description provided by the author
No description provided by the author
No description provided by the author
# Variables
No description provided by the author
# Structs
No description provided by the author
# Interfaces
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
# Type aliases
No description provided by the author
No description provided by the author