Add committer information to API and Webhooks. Also fixes #3271 (#3414)

tokarchuk/v1.17
lstahlman 8 years ago committed by 无闻
parent c5d4a9e046
commit 89f71b44f7
  1. 23
      models/action.go
  2. 12
      models/update.go
  3. 22
      routers/api/v1/convert/convert.go
  4. 4
      routers/repo/webhook.go

@ -234,11 +234,13 @@ func issueIndexTrimRight(c rune) bool {
} }
type PushCommit struct { type PushCommit struct {
Sha1 string Sha1 string
Message string Message string
AuthorEmail string AuthorEmail string
AuthorName string AuthorName string
Timestamp time.Time CommitterEmail string
CommitterName string
Timestamp time.Time
} }
type PushCommits struct { type PushCommits struct {
@ -263,6 +265,12 @@ func (pc *PushCommits) ToApiPayloadCommits(repoLink string) []*api.PayloadCommit
if err == nil { if err == nil {
authorUsername = author.Name authorUsername = author.Name
} }
committerUsername := ""
committer, err := GetUserByEmail(commit.CommitterEmail)
if err == nil {
// TODO: check errors other than email not found.
committerUsername = committer.Name
}
commits[i] = &api.PayloadCommit{ commits[i] = &api.PayloadCommit{
ID: commit.Sha1, ID: commit.Sha1,
Message: commit.Message, Message: commit.Message,
@ -272,6 +280,11 @@ func (pc *PushCommits) ToApiPayloadCommits(repoLink string) []*api.PayloadCommit
Email: commit.AuthorEmail, Email: commit.AuthorEmail,
UserName: authorUsername, UserName: authorUsername,
}, },
Committer: &api.PayloadCommitter{
Name: commit.CommitterName,
Email: commit.CommitterEmail,
UserName: committerUsername,
},
Timestamp: commit.Timestamp, Timestamp: commit.Timestamp,
} }
} }

@ -57,11 +57,13 @@ func ListToPushCommits(l *list.List) *PushCommits {
} }
commits = append(commits, commits = append(commits,
&PushCommit{ &PushCommit{
Sha1: commit.ID.String(), Sha1: commit.ID.String(),
Message: commit.Message(), Message: commit.Message(),
AuthorEmail: commit.Author.Email, AuthorEmail: commit.Author.Email,
AuthorName: commit.Author.Name, AuthorName: commit.Author.Name,
Timestamp: commit.Author.When, CommitterEmail: commit.Committer.Email,
CommitterName: commit.Committer.Name,
Timestamp: commit.Author.When,
}) })
} }
return &PushCommits{l.Len(), commits, "", nil} return &PushCommits{l.Len(), commits, "", nil}

@ -69,15 +69,31 @@ func ToBranch(b *models.Branch, c *git.Commit) *api.Branch {
} }
func ToCommit(c *git.Commit) *api.PayloadCommit { func ToCommit(c *git.Commit) *api.PayloadCommit {
authorUsername := ""
author, err := models.GetUserByEmail(c.Author.Email)
if err == nil {
authorUsername = author.Name
}
committerUsername := ""
committer, err := models.GetUserByEmail(c.Committer.Email)
if err == nil {
committerUsername = committer.Name
}
return &api.PayloadCommit{ return &api.PayloadCommit{
ID: c.ID.String(), ID: c.ID.String(),
Message: c.Message(), Message: c.Message(),
URL: "Not implemented", URL: "Not implemented",
Author: &api.PayloadAuthor{ Author: &api.PayloadAuthor{
Name: c.Committer.Name, Name: c.Author.Name,
Email: c.Committer.Email, Email: c.Author.Email,
/* UserName: c.Committer.UserName, */ UserName: authorUsername,
},
Committer: &api.PayloadCommitter{
Name: c.Committer.Name,
Email: c.Committer.Email,
UserName: committerUsername,
}, },
Timestamp: c.Author.When,
} }
} }

@ -359,6 +359,10 @@ func TestWebhook(ctx *context.Context) {
Name: ctx.Repo.Commit.Author.Name, Name: ctx.Repo.Commit.Author.Name,
Email: ctx.Repo.Commit.Author.Email, Email: ctx.Repo.Commit.Author.Email,
}, },
Committer: &api.PayloadCommitter{
Name: ctx.Repo.Commit.Committer.Name,
Email: ctx.Repo.Commit.Committer.Email,
},
}, },
}, },
Repo: ctx.Repo.Repository.ComposePayload(), Repo: ctx.Repo.Repository.ComposePayload(),

Loading…
Cancel
Save