Skip to content

Commit 0109229

Browse files
authored
Move release webhook to notification (#8817)
* Move release webhook to notification * Extract release webhook method * fix bug * fix import
1 parent 6d42add commit 0109229

File tree

2 files changed

+35
-41
lines changed

2 files changed

+35
-41
lines changed

modules/notification/webhook/webhook.go

+31-3
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ import (
1111
"code.gitea.io/gitea/modules/notification/base"
1212
"code.gitea.io/gitea/modules/setting"
1313
api "code.gitea.io/gitea/modules/structs"
14-
"code.gitea.io/gitea/modules/webhook"
1514
webhook_module "code.gitea.io/gitea/modules/webhook"
1615
)
1716

@@ -289,7 +288,7 @@ func (m *webhookNotifier) NotifyNewPullRequest(pull *models.PullRequest) {
289288
}
290289

291290
mode, _ := models.AccessLevel(pull.Issue.Poster, pull.Issue.Repo)
292-
if err := webhook.PrepareWebhooks(pull.Issue.Repo, models.HookEventPullRequest, &api.PullRequestPayload{
291+
if err := webhook_module.PrepareWebhooks(pull.Issue.Repo, models.HookEventPullRequest, &api.PullRequestPayload{
293292
Action: api.HookIssueOpened,
294293
Index: pull.Issue.Index,
295294
PullRequest: pull.APIFormat(),
@@ -548,7 +547,7 @@ func (m *webhookNotifier) NotifyPullRequestReview(pr *models.PullRequest, review
548547
log.Error("models.AccessLevel: %v", err)
549548
return
550549
}
551-
if err := webhook.PrepareWebhooks(review.Issue.Repo, reviewHookType, &api.PullRequestPayload{
550+
if err := webhook_module.PrepareWebhooks(review.Issue.Repo, reviewHookType, &api.PullRequestPayload{
552551
Action: api.HookIssueSynchronized,
553552
Index: review.Issue.Index,
554553
PullRequest: pr.APIFormat(),
@@ -627,3 +626,32 @@ func (m *webhookNotifier) NotifyDeleteRef(pusher *models.User, repo *models.Repo
627626
log.Error("PrepareWebhooks.(delete branch): %v", err)
628627
}
629628
}
629+
630+
func sendReleaseHook(doer *models.User, rel *models.Release, action api.HookReleaseAction) {
631+
if err := rel.LoadAttributes(); err != nil {
632+
log.Error("LoadAttributes: %v", err)
633+
return
634+
}
635+
636+
mode, _ := models.AccessLevel(rel.Publisher, rel.Repo)
637+
if err := webhook_module.PrepareWebhooks(rel.Repo, models.HookEventRelease, &api.ReleasePayload{
638+
Action: action,
639+
Release: rel.APIFormat(),
640+
Repository: rel.Repo.APIFormat(mode),
641+
Sender: rel.Publisher.APIFormat(),
642+
}); err != nil {
643+
log.Error("PrepareWebhooks: %v", err)
644+
}
645+
}
646+
647+
func (m *webhookNotifier) NotifyNewRelease(rel *models.Release) {
648+
sendReleaseHook(rel.Publisher, rel, api.HookReleasePublished)
649+
}
650+
651+
func (m *webhookNotifier) NotifyUpdateRelease(doer *models.User, rel *models.Release) {
652+
sendReleaseHook(doer, rel, api.HookReleaseUpdated)
653+
}
654+
655+
func (m *webhookNotifier) NotifyDeleteRelease(doer *models.User, rel *models.Release) {
656+
sendReleaseHook(doer, rel, api.HookReleaseDeleted)
657+
}

services/release/release.go

+4-38
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,9 @@ import (
1212
"code.gitea.io/gitea/models"
1313
"code.gitea.io/gitea/modules/git"
1414
"code.gitea.io/gitea/modules/log"
15+
"code.gitea.io/gitea/modules/notification"
1516
"code.gitea.io/gitea/modules/process"
16-
api "code.gitea.io/gitea/modules/structs"
1717
"code.gitea.io/gitea/modules/timeutil"
18-
"code.gitea.io/gitea/modules/webhook"
1918
)
2019

2120
func createTag(gitRepo *git.Repository, rel *models.Release) error {
@@ -81,19 +80,7 @@ func CreateRelease(gitRepo *git.Repository, rel *models.Release, attachmentUUIDs
8180
}
8281

8382
if !rel.IsDraft {
84-
if err := rel.LoadAttributes(); err != nil {
85-
log.Error("LoadAttributes: %v", err)
86-
} else {
87-
mode, _ := models.AccessLevel(rel.Publisher, rel.Repo)
88-
if err := webhook.PrepareWebhooks(rel.Repo, models.HookEventRelease, &api.ReleasePayload{
89-
Action: api.HookReleasePublished,
90-
Release: rel.APIFormat(),
91-
Repository: rel.Repo.APIFormat(mode),
92-
Sender: rel.Publisher.APIFormat(),
93-
}); err != nil {
94-
log.Error("PrepareWebhooks: %v", err)
95-
}
96-
}
83+
notification.NotifyNewRelease(rel)
9784
}
9885

9986
return nil
@@ -114,20 +101,7 @@ func UpdateRelease(doer *models.User, gitRepo *git.Repository, rel *models.Relea
114101
log.Error("AddReleaseAttachments: %v", err)
115102
}
116103

117-
if err = rel.LoadAttributes(); err != nil {
118-
return err
119-
}
120-
121-
// even if attachments added failed, hooks will be still triggered
122-
mode, _ := models.AccessLevel(doer, rel.Repo)
123-
if err1 := webhook.PrepareWebhooks(rel.Repo, models.HookEventRelease, &api.ReleasePayload{
124-
Action: api.HookReleaseUpdated,
125-
Release: rel.APIFormat(),
126-
Repository: rel.Repo.APIFormat(mode),
127-
Sender: doer.APIFormat(),
128-
}); err1 != nil {
129-
log.Error("PrepareWebhooks: %v", err)
130-
}
104+
notification.NotifyUpdateRelease(doer, rel)
131105

132106
return err
133107
}
@@ -183,15 +157,7 @@ func DeleteReleaseByID(id int64, doer *models.User, delTag bool) error {
183157
}
184158
}
185159

186-
mode, _ := models.AccessLevel(doer, rel.Repo)
187-
if err := webhook.PrepareWebhooks(rel.Repo, models.HookEventRelease, &api.ReleasePayload{
188-
Action: api.HookReleaseDeleted,
189-
Release: rel.APIFormat(),
190-
Repository: rel.Repo.APIFormat(mode),
191-
Sender: doer.APIFormat(),
192-
}); err != nil {
193-
log.Error("PrepareWebhooks: %v", err)
194-
}
160+
notification.NotifyDeleteRelease(doer, rel)
195161

196162
return nil
197163
}

0 commit comments

Comments
 (0)