diff options
Diffstat (limited to 'services/webhook/notifier.go')
-rw-r--r-- | services/webhook/notifier.go | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/services/webhook/notifier.go b/services/webhook/notifier.go index 38fad7f5e8..cc263947e9 100644 --- a/services/webhook/notifier.go +++ b/services/webhook/notifier.go @@ -6,6 +6,7 @@ package webhook import ( "context" + git_model "code.gitea.io/gitea/models/git" issues_model "code.gitea.io/gitea/models/issues" packages_model "code.gitea.io/gitea/models/packages" "code.gitea.io/gitea/models/perm" @@ -861,6 +862,36 @@ func (m *webhookNotifier) SyncPushCommits(ctx context.Context, pusher *user_mode } } +func (m *webhookNotifier) CreateCommitStatus(ctx context.Context, repo *repo_model.Repository, commit *repository.PushCommit, sender *user_model.User, status *git_model.CommitStatus) { + apiSender := convert.ToUser(ctx, sender, nil) + apiCommit, err := repository.ToAPIPayloadCommit(ctx, map[string]*user_model.User{}, repo.RepoPath(), repo.HTMLURL(), commit) + if err != nil { + log.Error("commits.ToAPIPayloadCommits failed: %v", err) + return + } + + payload := api.CommitStatusPayload{ + Context: status.Context, + CreatedAt: status.CreatedUnix.AsTime().UTC(), + Description: status.Description, + ID: status.ID, + SHA: commit.Sha1, + State: status.State.String(), + TargetURL: status.TargetURL, + + Commit: apiCommit, + Repo: convert.ToRepo(ctx, repo, access_model.Permission{AccessMode: perm.AccessModeOwner}), + Sender: apiSender, + } + if !status.UpdatedUnix.IsZero() { + t := status.UpdatedUnix.AsTime().UTC() + payload.UpdatedAt = &t + } + if err := PrepareWebhooks(ctx, EventSource{Repository: repo}, webhook_module.HookEventStatus, &payload); err != nil { + log.Error("PrepareWebhooks: %v", err) + } +} + func (m *webhookNotifier) SyncCreateRef(ctx context.Context, pusher *user_model.User, repo *repo_model.Repository, refFullName git.RefName, refID string) { m.CreateRef(ctx, pusher, repo, refFullName, refID) } |