summaryrefslogtreecommitdiffstats
path: root/modules/notification
diff options
context:
space:
mode:
authorLunny Xiao <xiaolunwen@gmail.com>2019-11-06 14:43:03 +0800
committerGitHub <noreply@github.com>2019-11-06 14:43:03 +0800
commit8a84d82d5341ff6572e7c77f5779e2583ed45c25 (patch)
tree8cd399ebff88f2e10a76a01c117834b25a0c699f /modules/notification
parent36b8c081f6b9b642bc068158b3a893d027d06ba8 (diff)
downloadgitea-8a84d82d5341ff6572e7c77f5779e2583ed45c25.tar.gz
gitea-8a84d82d5341ff6572e7c77f5779e2583ed45c25.zip
Move repofiles webhooks to notification (#8807)
Diffstat (limited to 'modules/notification')
-rw-r--r--modules/notification/base/notifier.go2
-rw-r--r--modules/notification/base/null.go8
-rw-r--r--modules/notification/notification.go14
-rw-r--r--modules/notification/webhook/webhook.go47
4 files changed, 70 insertions, 1 deletions
diff --git a/modules/notification/base/notifier.go b/modules/notification/base/notifier.go
index 286ebe5d69..72bf52c938 100644
--- a/modules/notification/base/notifier.go
+++ b/modules/notification/base/notifier.go
@@ -43,4 +43,6 @@ type Notifier interface {
NotifyDeleteRelease(doer *models.User, rel *models.Release)
NotifyPushCommits(pusher *models.User, repo *models.Repository, refName, oldCommitID, newCommitID string, commits *models.PushCommits)
+ NotifyCreateRef(doer *models.User, repo *models.Repository, refType, refFullName string)
+ NotifyDeleteRef(doer *models.User, repo *models.Repository, refType, refFullName string)
}
diff --git a/modules/notification/base/null.go b/modules/notification/base/null.go
index 5b6359cbd5..a9d9d6a164 100644
--- a/modules/notification/base/null.go
+++ b/modules/notification/base/null.go
@@ -114,3 +114,11 @@ func (*NullNotifier) NotifyMigrateRepository(doer *models.User, u *models.User,
// NotifyPushCommits notifies commits pushed to notifiers
func (*NullNotifier) NotifyPushCommits(pusher *models.User, repo *models.Repository, refName, oldCommitID, newCommitID string, commits *models.PushCommits) {
}
+
+// NotifyCreateRef notifies branch or tag creation to notifiers
+func (*NullNotifier) NotifyCreateRef(doer *models.User, repo *models.Repository, refType, refFullName string) {
+}
+
+// NotifyDeleteRef notifies branch or tag deleteion to notifiers
+func (*NullNotifier) NotifyDeleteRef(doer *models.User, repo *models.Repository, refType, refFullName string) {
+}
diff --git a/modules/notification/notification.go b/modules/notification/notification.go
index a5e450ee66..5ac09a72e5 100644
--- a/modules/notification/notification.go
+++ b/modules/notification/notification.go
@@ -199,3 +199,17 @@ func NotifyPushCommits(pusher *models.User, repo *models.Repository, refName, ol
notifier.NotifyPushCommits(pusher, repo, refName, oldCommitID, newCommitID, commits)
}
}
+
+// NotifyCreateRef notifies branch or tag creation to notifiers
+func NotifyCreateRef(pusher *models.User, repo *models.Repository, refType, refFullName string) {
+ for _, notifier := range notifiers {
+ notifier.NotifyCreateRef(pusher, repo, refType, refFullName)
+ }
+}
+
+// NotifyDeleteRef notifies branch or tag deletion to notifiers
+func NotifyDeleteRef(pusher *models.User, repo *models.Repository, refType, refFullName string) {
+ for _, notifier := range notifiers {
+ notifier.NotifyDeleteRef(pusher, repo, refType, refFullName)
+ }
+}
diff --git a/modules/notification/webhook/webhook.go b/modules/notification/webhook/webhook.go
index 39c63edb05..6eb03d3ebc 100644
--- a/modules/notification/webhook/webhook.go
+++ b/modules/notification/webhook/webhook.go
@@ -6,6 +6,7 @@ package webhook
import (
"code.gitea.io/gitea/models"
+ "code.gitea.io/gitea/modules/git"
"code.gitea.io/gitea/modules/log"
"code.gitea.io/gitea/modules/notification/base"
"code.gitea.io/gitea/modules/setting"
@@ -562,6 +563,34 @@ func (m *webhookNotifier) NotifyPullRequestReview(pr *models.PullRequest, review
}
}
+func (m *webhookNotifier) NotifyCreateRef(pusher *models.User, repo *models.Repository, refType, refFullName string) {
+ apiPusher := pusher.APIFormat()
+ apiRepo := repo.APIFormat(models.AccessModeNone)
+ refName := git.RefEndName(refFullName)
+
+ gitRepo, err := git.OpenRepository(repo.RepoPath())
+ if err != nil {
+ log.Error("OpenRepository[%s]: %v", repo.RepoPath(), err)
+ return
+ }
+
+ shaSum, err := gitRepo.GetBranchCommitID(refName)
+ if err != nil {
+ log.Error("GetBranchCommitID[%s]: %v", refFullName, err)
+ return
+ }
+
+ if err = webhook_module.PrepareWebhooks(repo, models.HookEventCreate, &api.CreatePayload{
+ Ref: refName,
+ Sha: shaSum,
+ RefType: refType,
+ Repo: apiRepo,
+ Sender: apiPusher,
+ }); err != nil {
+ log.Error("PrepareWebhooks: %v", err)
+ }
+}
+
func (m *webhookNotifier) NotifyPullRequestSynchronized(doer *models.User, pr *models.PullRequest) {
if err := pr.LoadIssue(); err != nil {
log.Error("pr.LoadIssue: %v", err)
@@ -572,7 +601,7 @@ func (m *webhookNotifier) NotifyPullRequestSynchronized(doer *models.User, pr *m
return
}
- if err := webhook.PrepareWebhooks(pr.Issue.Repo, models.HookEventPullRequest, &api.PullRequestPayload{
+ if err := webhook_module.PrepareWebhooks(pr.Issue.Repo, models.HookEventPullRequest, &api.PullRequestPayload{
Action: api.HookIssueSynchronized,
Index: pr.Issue.Index,
PullRequest: pr.Issue.PullRequest.APIFormat(),
@@ -582,3 +611,19 @@ func (m *webhookNotifier) NotifyPullRequestSynchronized(doer *models.User, pr *m
log.Error("PrepareWebhooks [pull_id: %v]: %v", pr.ID, err)
}
}
+
+func (m *webhookNotifier) NotifyDeleteRef(pusher *models.User, repo *models.Repository, refType, refFullName string) {
+ apiPusher := pusher.APIFormat()
+ apiRepo := repo.APIFormat(models.AccessModeNone)
+ refName := git.RefEndName(refFullName)
+
+ if err := webhook_module.PrepareWebhooks(repo, models.HookEventDelete, &api.DeletePayload{
+ Ref: refName,
+ RefType: "branch",
+ PusherType: api.PusherTypeUser,
+ Repo: apiRepo,
+ Sender: apiPusher,
+ }); err != nil {
+ log.Error("PrepareWebhooks.(delete branch): %v", err)
+ }
+}