Refactor webhook events (#33337)
Extract from #33320 This PR uses a map instead of a struct to store webhook event information. It removes many duplicated functions and makes the logic clearer.
This commit is contained in:
parent
594b8350b1
commit
e94f37f95e
10 changed files with 176 additions and 335 deletions
20
modules/webhook/events.go
Normal file
20
modules/webhook/events.go
Normal file
|
@ -0,0 +1,20 @@
|
|||
// Copyright 2025 The Gitea Authors. All rights reserved.
|
||||
// SPDX-License-Identifier: MIT
|
||||
|
||||
package webhook
|
||||
|
||||
type HookEvents map[HookEventType]bool
|
||||
|
||||
func (he HookEvents) Get(evt HookEventType) bool {
|
||||
return he[evt]
|
||||
}
|
||||
|
||||
// HookEvent represents events that will delivery hook.
|
||||
type HookEvent struct {
|
||||
PushOnly bool `json:"push_only"`
|
||||
SendEverything bool `json:"send_everything"`
|
||||
ChooseEvents bool `json:"choose_events"`
|
||||
BranchFilter string `json:"branch_filter"`
|
||||
|
||||
HookEvents `json:"events"`
|
||||
}
|
|
@ -1,39 +0,0 @@
|
|||
// Copyright 2022 The Gitea Authors. All rights reserved.
|
||||
// SPDX-License-Identifier: MIT
|
||||
|
||||
package webhook
|
||||
|
||||
// HookEvents is a set of web hook events
|
||||
type HookEvents struct {
|
||||
Create bool `json:"create"`
|
||||
Delete bool `json:"delete"`
|
||||
Fork bool `json:"fork"`
|
||||
Issues bool `json:"issues"`
|
||||
IssueAssign bool `json:"issue_assign"`
|
||||
IssueLabel bool `json:"issue_label"`
|
||||
IssueMilestone bool `json:"issue_milestone"`
|
||||
IssueComment bool `json:"issue_comment"`
|
||||
Push bool `json:"push"`
|
||||
PullRequest bool `json:"pull_request"`
|
||||
PullRequestAssign bool `json:"pull_request_assign"`
|
||||
PullRequestLabel bool `json:"pull_request_label"`
|
||||
PullRequestMilestone bool `json:"pull_request_milestone"`
|
||||
PullRequestComment bool `json:"pull_request_comment"`
|
||||
PullRequestReview bool `json:"pull_request_review"`
|
||||
PullRequestSync bool `json:"pull_request_sync"`
|
||||
PullRequestReviewRequest bool `json:"pull_request_review_request"`
|
||||
Wiki bool `json:"wiki"`
|
||||
Repository bool `json:"repository"`
|
||||
Release bool `json:"release"`
|
||||
Package bool `json:"package"`
|
||||
}
|
||||
|
||||
// HookEvent represents events that will delivery hook.
|
||||
type HookEvent struct {
|
||||
PushOnly bool `json:"push_only"`
|
||||
SendEverything bool `json:"send_everything"`
|
||||
ChooseEvents bool `json:"choose_events"`
|
||||
BranchFilter string `json:"branch_filter"`
|
||||
|
||||
HookEvents `json:"events"`
|
||||
}
|
|
@ -31,21 +31,47 @@ const (
|
|||
HookEventRepository HookEventType = "repository"
|
||||
HookEventRelease HookEventType = "release"
|
||||
HookEventPackage HookEventType = "package"
|
||||
HookEventSchedule HookEventType = "schedule"
|
||||
HookEventStatus HookEventType = "status"
|
||||
// once a new event added here, please also added to AllEvents() function
|
||||
|
||||
// FIXME: This event should be a group of pull_request_review_xxx events
|
||||
HookEventPullRequestReview HookEventType = "pull_request_review"
|
||||
// Actions event only
|
||||
HookEventSchedule HookEventType = "schedule"
|
||||
)
|
||||
|
||||
func AllEvents() []HookEventType {
|
||||
return []HookEventType{
|
||||
HookEventCreate,
|
||||
HookEventDelete,
|
||||
HookEventFork,
|
||||
HookEventPush,
|
||||
HookEventIssues,
|
||||
HookEventIssueAssign,
|
||||
HookEventIssueLabel,
|
||||
HookEventIssueMilestone,
|
||||
HookEventIssueComment,
|
||||
HookEventPullRequest,
|
||||
HookEventPullRequestAssign,
|
||||
HookEventPullRequestLabel,
|
||||
HookEventPullRequestMilestone,
|
||||
HookEventPullRequestComment,
|
||||
HookEventPullRequestReviewApproved,
|
||||
HookEventPullRequestReviewRejected,
|
||||
HookEventPullRequestReviewComment,
|
||||
HookEventPullRequestSync,
|
||||
HookEventPullRequestReviewRequest,
|
||||
HookEventWiki,
|
||||
HookEventRepository,
|
||||
HookEventRelease,
|
||||
HookEventPackage,
|
||||
HookEventStatus,
|
||||
}
|
||||
}
|
||||
|
||||
// Event returns the HookEventType as an event string
|
||||
func (h HookEventType) Event() string {
|
||||
switch h {
|
||||
case HookEventCreate:
|
||||
return "create"
|
||||
case HookEventDelete:
|
||||
return "delete"
|
||||
case HookEventFork:
|
||||
return "fork"
|
||||
case HookEventPush:
|
||||
return "push"
|
||||
case HookEventIssues, HookEventIssueAssign, HookEventIssueLabel, HookEventIssueMilestone:
|
||||
return "issues"
|
||||
case HookEventPullRequest, HookEventPullRequestAssign, HookEventPullRequestLabel, HookEventPullRequestMilestone,
|
||||
|
@ -59,14 +85,9 @@ func (h HookEventType) Event() string {
|
|||
return "pull_request_rejected"
|
||||
case HookEventPullRequestReviewComment:
|
||||
return "pull_request_comment"
|
||||
case HookEventWiki:
|
||||
return "wiki"
|
||||
case HookEventRepository:
|
||||
return "repository"
|
||||
case HookEventRelease:
|
||||
return "release"
|
||||
default:
|
||||
return string(h)
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (h HookEventType) IsPullRequest() bool {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue