Merge pull request #480 from compressed/correct_push_user

clarify name/username/owner/pusher for webhook
This commit is contained in:
无闻 2014-09-17 14:13:54 -04:00
commit c03f5a2c7c
3 changed files with 34 additions and 9 deletions

View File

@ -243,15 +243,29 @@ func CommitRepoAction(userId, repoUserId int64, userName, actEmail string,
if !strings.HasPrefix(oldCommitId, "0000000") { if !strings.HasPrefix(oldCommitId, "0000000") {
compareUrl = fmt.Sprintf("%s/compare/%s...%s", repoLink, oldCommitId, newCommitId) compareUrl = fmt.Sprintf("%s/compare/%s...%s", repoLink, oldCommitId, newCommitId)
} }
pusher_email, pusher_name := "", ""
pusher, err := GetUserByName(userName)
if err == nil {
pusher_email = pusher.Email
pusher_name = pusher.GetFullNameFallback()
}
commits := make([]*PayloadCommit, len(commit.Commits)) commits := make([]*PayloadCommit, len(commit.Commits))
for i, cmt := range commit.Commits { for i, cmt := range commit.Commits {
author_username := ""
author, err := GetUserByEmail(cmt.AuthorEmail)
if err == nil {
author_username = author.Name
}
commits[i] = &PayloadCommit{ commits[i] = &PayloadCommit{
Id: cmt.Sha1, Id: cmt.Sha1,
Message: cmt.Message, Message: cmt.Message,
Url: fmt.Sprintf("%s/commit/%s", repoLink, cmt.Sha1), Url: fmt.Sprintf("%s/commit/%s", repoLink, cmt.Sha1),
Author: &PayloadAuthor{ Author: &PayloadAuthor{
Name: cmt.AuthorName, Name: cmt.AuthorName,
Email: cmt.AuthorEmail, Email: cmt.AuthorEmail,
UserName: author_username,
}, },
} }
} }
@ -266,14 +280,16 @@ func CommitRepoAction(userId, repoUserId int64, userName, actEmail string,
Website: repo.Website, Website: repo.Website,
Watchers: repo.NumWatches, Watchers: repo.NumWatches,
Owner: &PayloadAuthor{ Owner: &PayloadAuthor{
Name: repoUserName, Name: repo.Owner.GetFullNameFallback(),
Email: actEmail, Email: repo.Owner.Email,
UserName: repo.Owner.Name,
}, },
Private: repo.IsPrivate, Private: repo.IsPrivate,
}, },
Pusher: &PayloadAuthor{ Pusher: &PayloadAuthor{
Name: repo.Owner.LowerName, Name: pusher_name,
Email: repo.Owner.Email, Email: pusher_email,
UserName: userName,
}, },
Before: oldCommitId, Before: oldCommitId,
After: newCommitId, After: newCommitId,

View File

@ -167,6 +167,14 @@ func (u *User) GetOrganizations() error {
return nil return nil
} }
// GetFullNameFallback returns Full Name if set, otherwise username
func (u *User) GetFullNameFallback() string {
if u.FullName == "" {
return u.Name
}
return u.FullName
}
// IsUserExist checks if given user name exist, // IsUserExist checks if given user name exist,
// the user name should be noncased unique. // the user name should be noncased unique.
func IsUserExist(name string) (bool, error) { func IsUserExist(name string) (bool, error) {

View File

@ -154,8 +154,9 @@ const (
) )
type PayloadAuthor struct { type PayloadAuthor struct {
Name string `json:"name"` Name string `json:"name"`
Email string `json:"email"` Email string `json:"email"`
UserName string `json:"username"`
} }
type PayloadCommit struct { type PayloadCommit struct {
@ -172,7 +173,7 @@ type PayloadRepo struct {
Description string `json:"description"` Description string `json:"description"`
Website string `json:"website"` Website string `json:"website"`
Watchers int `json:"watchers"` Watchers int `json:"watchers"`
Owner *PayloadAuthor `json:"author"` Owner *PayloadAuthor `json:"owner"`
Private bool `json:"private"` Private bool `json:"private"`
} }