1// Copyright 2022 The Gitea Authors. All rights reserved.
2// SPDX-License-Identifier: MIT
3
4package webhook
5
6// HookEventType is the type of a hook event
7type HookEventType string
8
9// Types of hook events
10const (
11 HookEventCreate HookEventType = "create"
12 HookEventDelete HookEventType = "delete"
13 HookEventFork HookEventType = "fork"
14 HookEventPush HookEventType = "push"
15 HookEventIssues HookEventType = "issues"
16 HookEventIssueAssign HookEventType = "issue_assign"
17 HookEventIssueLabel HookEventType = "issue_label"
18 HookEventIssueMilestone HookEventType = "issue_milestone"
19 HookEventIssueComment HookEventType = "issue_comment"
20 HookEventPullRequest HookEventType = "pull_request"
21 HookEventPullRequestAssign HookEventType = "pull_request_assign"
22 HookEventPullRequestLabel HookEventType = "pull_request_label"
23 HookEventPullRequestMilestone HookEventType = "pull_request_milestone"
24 HookEventPullRequestComment HookEventType = "pull_request_comment"
25 HookEventPullRequestReviewApproved HookEventType = "pull_request_review_approved"
26 HookEventPullRequestReviewRejected HookEventType = "pull_request_review_rejected"
27 HookEventPullRequestReviewComment HookEventType = "pull_request_review_comment"
28 HookEventPullRequestSync HookEventType = "pull_request_sync"
29 HookEventPullRequestReviewRequest HookEventType = "pull_request_review_request"
30 HookEventWiki HookEventType = "wiki"
31 HookEventRepository HookEventType = "repository"
32 HookEventRelease HookEventType = "release"
33 HookEventPackage HookEventType = "package"
34 HookEventSchedule HookEventType = "schedule"
35 HookEventWorkflowDispatch HookEventType = "workflow_dispatch"
36)
37
38// Event returns the HookEventType as an event string
39func (h HookEventType) Event() string {
40 switch h {
41 case HookEventCreate:
42 return "create"
43 case HookEventDelete:
44 return "delete"
45 case HookEventFork:
46 return "fork"
47 case HookEventPush:
48 return "push"
49 case HookEventIssues, HookEventIssueAssign, HookEventIssueLabel, HookEventIssueMilestone:
50 return "issues"
51 case HookEventPullRequest, HookEventPullRequestAssign, HookEventPullRequestLabel, HookEventPullRequestMilestone,
52 HookEventPullRequestSync, HookEventPullRequestReviewRequest:
53 return "pull_request"
54 case HookEventIssueComment, HookEventPullRequestComment:
55 return "issue_comment"
56 case HookEventPullRequestReviewApproved:
57 return "pull_request_approved"
58 case HookEventPullRequestReviewRejected:
59 return "pull_request_rejected"
60 case HookEventPullRequestReviewComment:
61 return "pull_request_comment"
62 case HookEventWiki:
63 return "wiki"
64 case HookEventRepository:
65 return "repository"
66 case HookEventRelease:
67 return "release"
68 }
69 return ""
70}
71
72// HookType is the type of a webhook
73type HookType = string
74
75// Types of webhooks
76const (
77 FORGEJO HookType = "forgejo"
78 GITEA HookType = "gitea"
79 GOGS HookType = "gogs"
80 SLACK HookType = "slack"
81 DISCORD HookType = "discord"
82 DINGTALK HookType = "dingtalk"
83 TELEGRAM HookType = "telegram"
84 MSTEAMS HookType = "msteams"
85 FEISHU HookType = "feishu"
86 MATRIX HookType = "matrix"
87 WECHATWORK HookType = "wechatwork"
88 PACKAGIST HookType = "packagist"
89 SOURCEHUT_BUILDS HookType = "sourcehut_builds" //nolint:revive
90)
91
92// HookStatus is the status of a web hook
93type HookStatus int
94
95// Possible statuses of a web hook
96const (
97 HookStatusNone HookStatus = iota
98 HookStatusSucceed
99 HookStatusFail
100)