Move push commits events to notification (#8783)
* Move push commits events to notification * Update modules/notification/base/null.go Co-Authored-By: guillep2k <18600385+guillep2k@users.noreply.github.com>
This commit is contained in:
		
							parent
							
								
									fe7a6d9bfc
								
							
						
					
					
						commit
						022d2d8beb
					
				
					 6 changed files with 41 additions and 36 deletions
				
			
		|  | @ -40,4 +40,6 @@ type Notifier interface { | ||||||
| 	NotifyNewRelease(rel *models.Release) | 	NotifyNewRelease(rel *models.Release) | ||||||
| 	NotifyUpdateRelease(doer *models.User, rel *models.Release) | 	NotifyUpdateRelease(doer *models.User, rel *models.Release) | ||||||
| 	NotifyDeleteRelease(doer *models.User, rel *models.Release) | 	NotifyDeleteRelease(doer *models.User, rel *models.Release) | ||||||
|  | 
 | ||||||
|  | 	NotifyPushCommits(pusher *models.User, repo *models.Repository, refName, oldCommitID, newCommitID string, commits *models.PushCommits) | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -106,3 +106,7 @@ func (*NullNotifier) NotifyCreateRepository(doer *models.User, u *models.User, r | ||||||
| // NotifyMigrateRepository places a place holder function
 | // NotifyMigrateRepository places a place holder function
 | ||||||
| func (*NullNotifier) NotifyMigrateRepository(doer *models.User, u *models.User, repo *models.Repository) { | func (*NullNotifier) NotifyMigrateRepository(doer *models.User, u *models.User, repo *models.Repository) { | ||||||
| } | } | ||||||
|  | 
 | ||||||
|  | // NotifyPushCommits notifies commits pushed to notifiers
 | ||||||
|  | func (*NullNotifier) NotifyPushCommits(pusher *models.User, repo *models.Repository, refName, oldCommitID, newCommitID string, commits *models.PushCommits) { | ||||||
|  | } | ||||||
|  |  | ||||||
|  | @ -183,3 +183,10 @@ func NotifyMigrateRepository(doer *models.User, u *models.User, repo *models.Rep | ||||||
| 		notifier.NotifyMigrateRepository(doer, u, repo) | 		notifier.NotifyMigrateRepository(doer, u, repo) | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
|  | 
 | ||||||
|  | // NotifyPushCommits notifies commits pushed to notifiers
 | ||||||
|  | func NotifyPushCommits(pusher *models.User, repo *models.Repository, refName, oldCommitID, newCommitID string, commits *models.PushCommits) { | ||||||
|  | 	for _, notifier := range notifiers { | ||||||
|  | 		notifier.NotifyPushCommits(pusher, repo, refName, oldCommitID, newCommitID, commits) | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  |  | ||||||
|  | @ -8,6 +8,7 @@ import ( | ||||||
| 	"code.gitea.io/gitea/models" | 	"code.gitea.io/gitea/models" | ||||||
| 	"code.gitea.io/gitea/modules/log" | 	"code.gitea.io/gitea/modules/log" | ||||||
| 	"code.gitea.io/gitea/modules/notification/base" | 	"code.gitea.io/gitea/modules/notification/base" | ||||||
|  | 	"code.gitea.io/gitea/modules/setting" | ||||||
| 	api "code.gitea.io/gitea/modules/structs" | 	api "code.gitea.io/gitea/modules/structs" | ||||||
| 	webhook_module "code.gitea.io/gitea/modules/webhook" | 	webhook_module "code.gitea.io/gitea/modules/webhook" | ||||||
| ) | ) | ||||||
|  | @ -461,3 +462,25 @@ func (m *webhookNotifier) NotifyIssueChangeMilestone(doer *models.User, issue *m | ||||||
| 		log.Error("PrepareWebhooks [is_pull: %v]: %v", issue.IsPull, err) | 		log.Error("PrepareWebhooks [is_pull: %v]: %v", issue.IsPull, err) | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
|  | 
 | ||||||
|  | func (m *webhookNotifier) NotifyPushCommits(pusher *models.User, repo *models.Repository, refName, oldCommitID, newCommitID string, commits *models.PushCommits) { | ||||||
|  | 	apiPusher := pusher.APIFormat() | ||||||
|  | 	apiCommits, err := commits.ToAPIPayloadCommits(repo.RepoPath(), repo.HTMLURL()) | ||||||
|  | 	if err != nil { | ||||||
|  | 		log.Error("commits.ToAPIPayloadCommits failed: %v", err) | ||||||
|  | 		return | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	if err := webhook_module.PrepareWebhooks(repo, models.HookEventPush, &api.PushPayload{ | ||||||
|  | 		Ref:        refName, | ||||||
|  | 		Before:     oldCommitID, | ||||||
|  | 		After:      newCommitID, | ||||||
|  | 		CompareURL: setting.AppURL + commits.CompareURL, | ||||||
|  | 		Commits:    apiCommits, | ||||||
|  | 		Repo:       repo.APIFormat(models.AccessModeOwner), | ||||||
|  | 		Pusher:     apiPusher, | ||||||
|  | 		Sender:     apiPusher, | ||||||
|  | 	}); err != nil { | ||||||
|  | 		log.Error("PrepareWebhooks: %v", err) | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  |  | ||||||
|  | @ -12,6 +12,7 @@ import ( | ||||||
| 	"code.gitea.io/gitea/models" | 	"code.gitea.io/gitea/models" | ||||||
| 	"code.gitea.io/gitea/modules/git" | 	"code.gitea.io/gitea/modules/git" | ||||||
| 	"code.gitea.io/gitea/modules/log" | 	"code.gitea.io/gitea/modules/log" | ||||||
|  | 	"code.gitea.io/gitea/modules/notification" | ||||||
| 	"code.gitea.io/gitea/modules/setting" | 	"code.gitea.io/gitea/modules/setting" | ||||||
| 	api "code.gitea.io/gitea/modules/structs" | 	api "code.gitea.io/gitea/modules/structs" | ||||||
| 	"code.gitea.io/gitea/modules/webhook" | 	"code.gitea.io/gitea/modules/webhook" | ||||||
|  | @ -190,22 +191,7 @@ func CommitRepoAction(opts CommitRepoActionOptions) error { | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	if isHookEventPush { | 	if isHookEventPush { | ||||||
| 		commits, err := opts.Commits.ToAPIPayloadCommits(repo.RepoPath(), repo.HTMLURL()) | 		notification.NotifyPushCommits(pusher, repo, opts.RefFullName, opts.OldCommitID, opts.NewCommitID, opts.Commits) | ||||||
| 		if err != nil { |  | ||||||
| 			return err |  | ||||||
| 		} |  | ||||||
| 		if err = webhook.PrepareWebhooks(repo, models.HookEventPush, &api.PushPayload{ |  | ||||||
| 			Ref:        opts.RefFullName, |  | ||||||
| 			Before:     opts.OldCommitID, |  | ||||||
| 			After:      opts.NewCommitID, |  | ||||||
| 			CompareURL: setting.AppURL + opts.Commits.CompareURL, |  | ||||||
| 			Commits:    commits, |  | ||||||
| 			Repo:       apiRepo, |  | ||||||
| 			Pusher:     apiPusher, |  | ||||||
| 			Sender:     apiPusher, |  | ||||||
| 		}); err != nil { |  | ||||||
| 			return fmt.Errorf("PrepareWebhooks: %v", err) |  | ||||||
| 		} |  | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	return nil | 	return nil | ||||||
|  |  | ||||||
|  | @ -9,9 +9,8 @@ import ( | ||||||
| 	"fmt" | 	"fmt" | ||||||
| 
 | 
 | ||||||
| 	"code.gitea.io/gitea/models" | 	"code.gitea.io/gitea/models" | ||||||
|  | 	"code.gitea.io/gitea/modules/notification" | ||||||
| 	"code.gitea.io/gitea/modules/setting" | 	"code.gitea.io/gitea/modules/setting" | ||||||
| 	api "code.gitea.io/gitea/modules/structs" |  | ||||||
| 	"code.gitea.io/gitea/modules/webhook" |  | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
| func syncAction(opType models.ActionType, repo *models.Repository, refName string, data []byte) error { | func syncAction(opType models.ActionType, repo *models.Repository, refName string, data []byte) error { | ||||||
|  | @ -45,25 +44,9 @@ func SyncPushAction(repo *models.Repository, opts SyncPushActionOptions) error { | ||||||
| 		opts.Commits.Commits = opts.Commits.Commits[:setting.UI.FeedMaxCommitNum] | 		opts.Commits.Commits = opts.Commits.Commits[:setting.UI.FeedMaxCommitNum] | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	apiCommits, err := opts.Commits.ToAPIPayloadCommits(repo.RepoPath(), repo.HTMLURL()) |  | ||||||
| 	if err != nil { |  | ||||||
| 		return err |  | ||||||
| 	} |  | ||||||
| 
 |  | ||||||
| 	opts.Commits.CompareURL = repo.ComposeCompareURL(opts.OldCommitID, opts.NewCommitID) | 	opts.Commits.CompareURL = repo.ComposeCompareURL(opts.OldCommitID, opts.NewCommitID) | ||||||
| 	apiPusher := repo.MustOwner().APIFormat() | 
 | ||||||
| 	if err := webhook.PrepareWebhooks(repo, models.HookEventPush, &api.PushPayload{ | 	notification.NotifyPushCommits(repo.MustOwner(), repo, opts.RefName, opts.OldCommitID, opts.NewCommitID, opts.Commits) | ||||||
| 		Ref:        opts.RefName, |  | ||||||
| 		Before:     opts.OldCommitID, |  | ||||||
| 		After:      opts.NewCommitID, |  | ||||||
| 		CompareURL: setting.AppURL + opts.Commits.CompareURL, |  | ||||||
| 		Commits:    apiCommits, |  | ||||||
| 		Repo:       repo.APIFormat(models.AccessModeOwner), |  | ||||||
| 		Pusher:     apiPusher, |  | ||||||
| 		Sender:     apiPusher, |  | ||||||
| 	}); err != nil { |  | ||||||
| 		return fmt.Errorf("PrepareWebhooks: %v", err) |  | ||||||
| 	} |  | ||||||
| 
 | 
 | ||||||
| 	data, err := json.Marshal(opts.Commits) | 	data, err := json.Marshal(opts.Commits) | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
|  |  | ||||||
		Loading…
	
		Reference in a new issue