webhook

package
v0.11.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 11, 2026 License: Apache-2.0 Imports: 23 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func ValidateGitLabWebhookToken added in v0.4.0

func ValidateGitLabWebhookToken(r *http.Request, expectedToken string) bool

ValidateGitLabWebhookToken validates a GitLab webhook payload token.

Types

type ConfigFetcher

type ConfigFetcher interface {
	FetchConfig(ctx context.Context, provider, project, ref string) ([]byte, error)
}

ConfigFetcher fetches .diverge.yaml from a source code repository.

type DeliveryDedup added in v0.9.0

type DeliveryDedup struct {
	// contains filtered or unexported fields
}

DeliveryDedup prevents webhook replay attacks by tracking delivery IDs.

func NewDeliveryDedup added in v0.9.0

func NewDeliveryDedup() *DeliveryDedup

func (*DeliveryDedup) IsDuplicate added in v0.9.0

func (d *DeliveryDedup) IsDuplicate(id string) bool

type GitHubConfigFetcher

type GitHubConfigFetcher struct {
	Token      string
	HTTPClient *http.Client
}

GitHubConfigFetcher fetches .diverge.yaml from the GitHub API.

func (*GitHubConfigFetcher) FetchConfig

func (f *GitHubConfigFetcher) FetchConfig(ctx context.Context, provider, project, ref string) ([]byte, error)

type GitHubPRPayload

type GitHubPRPayload struct {
	Action      string `json:"action"`
	PullRequest struct {
		Number int `json:"number"`
		Head   struct {
			Ref string `json:"ref"`
			SHA string `json:"sha"`
		} `json:"head"`
		Base struct {
			Ref string `json:"ref"`
		} `json:"base"`
		State string `json:"state"`
	} `json:"pull_request"`
	Repository struct {
		FullName string `json:"full_name"`
	} `json:"repository"`
}

type GitHubWebhookHandler

type GitHubWebhookHandler struct {
	Client        client.Client
	Config        WebhookConfig
	ConfigFetcher ConfigFetcher
	DefaultNS     string
	Dedup         *DeliveryDedup
}

func (*GitHubWebhookHandler) ServeHTTP

func (h *GitHubWebhookHandler) ServeHTTP(w http.ResponseWriter, r *http.Request)

type GitLabConfigFetcher

type GitLabConfigFetcher struct {
	BaseURL    string
	Token      string
	HTTPClient *http.Client
}

GitLabConfigFetcher fetches .diverge.yaml from the GitLab API.

func (*GitLabConfigFetcher) FetchConfig

func (f *GitLabConfigFetcher) FetchConfig(ctx context.Context, provider, project, ref string) ([]byte, error)

type GitLabMRPayload

type GitLabMRPayload struct {
	ObjectKind       string `json:"object_kind"`
	EventType        string `json:"event_type"`
	ObjectAttributes struct {
		ID           int    `json:"id"`
		IID          int    `json:"iid"`
		TargetBranch string `json:"target_branch"`
		SourceBranch string `json:"source_branch"`
		State        string `json:"state"`
		Action       string `json:"action"`
		LastCommit   struct {
			ID string `json:"id"`
		} `json:"last_commit"`
	} `json:"object_attributes"`
	Project struct {
		Name              string `json:"name"`
		PathWithNamespace string `json:"path_with_namespace"`
	} `json:"project"`
}

GitLabMRPayload is a simple struct to decode MR webhook payloads

type GitLabPreviewGroupWebhookHandler

type GitLabPreviewGroupWebhookHandler struct {
	Client        client.Client
	Config        WebhookConfig
	ConfigFetcher ConfigFetcher
}

func (*GitLabPreviewGroupWebhookHandler) ServeHTTP

type GitLabWebhookHandler

type GitLabWebhookHandler struct {
	Client        client.Client
	Config        WebhookConfig
	ConfigFetcher ConfigFetcher
	DefaultNS     string
	Dedup         *DeliveryDedup
}

func (*GitLabWebhookHandler) ServeHTTP

func (h *GitLabWebhookHandler) ServeHTTP(w http.ResponseWriter, r *http.Request)

type WebhookConfig

type WebhookConfig struct {
	SecretToken string
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL