diff --git a/.gopmfile b/.gopmfile index e8ffef1e36..9d80bca4bb 100644 --- a/.gopmfile +++ b/.gopmfile @@ -18,8 +18,8 @@ github.com/go-xorm/core = commit:5bf745d github.com/go-xorm/xorm = commit:c6c7056 github.com/gogits/chardet = commit:2404f77 github.com/gogits/cron = commit:7f3990a -github.com/gogits/git-module = commit:efc90b5 -github.com/gogits/go-gogs-client = commit:87e4334 +github.com/gogits/git-module = commit:313ce90 +github.com/gogits/go-gogs-client = commit:e363d3f github.com/issue9/identicon = commit:d36b545 github.com/jaytaylor/html2text = commit:52d9b78 github.com/kardianos/minwinsvc = commit:cad6b2b diff --git a/README.md b/README.md index 7b4b310b60..2a36e8a958 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ Gogs - Go Git Service [![Build Status](https://travis-ci.org/gogits/gogs.svg?bra ![](https://github.com/gogits/gogs/blob/master/public/img/gogs-large-resize.png?raw=true) -##### Current tip version: 0.9.76 (see [Releases](https://github.com/gogits/gogs/releases) for binary versions) +##### Current tip version: 0.9.77 (see [Releases](https://github.com/gogits/gogs/releases) for binary versions) | Web | UI | Preview | |:-------------:|:-------:|:-------:| diff --git a/cmd/serve.go b/cmd/serve.go index a7503ca9b6..e55da77441 100644 --- a/cmd/serve.go +++ b/cmd/serve.go @@ -15,6 +15,7 @@ import ( "github.com/Unknwon/com" "github.com/codegangsta/cli" + git "github.com/gogits/git-module" gouuid "github.com/satori/go.uuid" "github.com/gogits/gogs/models" @@ -113,7 +114,7 @@ func handleUpdateTask(uuid string, user, repoUser *models.User, reponame string, // Ask for running deliver hook and test pull request tasks. reqURL := setting.LocalURL + repoUser.Name + "/" + reponame + "/tasks/trigger?branch=" + - strings.TrimPrefix(task.RefName, "refs/heads/") + "&secret=" + base.EncodeMD5(repoUser.Salt) + "&pusher=" + com.ToStr(user.ID) + strings.TrimPrefix(task.RefName, git.BRANCH_PREFIX) + "&secret=" + base.EncodeMD5(repoUser.Salt) + "&pusher=" + com.ToStr(user.ID) log.GitLogger.Trace("Trigger task: %s", reqURL) resp, err := httplib.Head(reqURL).SetTLSClientConfig(&tls.Config{ diff --git a/cmd/web.go b/cmd/web.go index ed45bdc060..bf027958b7 100644 --- a/cmd/web.go +++ b/cmd/web.go @@ -89,7 +89,7 @@ func checkVersion() { {"gopkg.in/ini.v1", ini.Version, "1.8.4"}, {"gopkg.in/macaron.v1", macaron.Version, "1.1.7"}, {"github.com/gogits/git-module", git.Version, "0.3.5"}, - {"github.com/gogits/go-gogs-client", gogs.Version, "0.10.4"}, + {"github.com/gogits/go-gogs-client", gogs.Version, "0.12.0"}, } for _, c := range checkers { if !version.Compare(c.Version(), c.Expected, ">=") { diff --git a/glide.lock b/glide.lock index fa728e0f8c..520f8dad1c 100644 --- a/glide.lock +++ b/glide.lock @@ -41,9 +41,9 @@ imports: - name: github.com/gogits/cron version: 7f3990acf1833faa5ebd0e86f0a4c72a4b5eba3c - name: github.com/gogits/git-module - version: efc90b5ea1f7b7e404673dcc19674b2a6856e0d3 + version: 313ce907cc5a5801126c7dfa3a74d21cc3104329 - name: github.com/gogits/go-gogs-client - version: 87e433464c1f5e98e7208123c15b78119776fb83 + version: e363d3ff8f70d0fe813324eedf228684af41c29c - name: github.com/issue9/identicon version: d36b54562f4cf70c83653e13dc95c220c79ef521 - name: github.com/jaytaylor/html2text diff --git a/gogs.go b/gogs.go index 9a86c5cb67..032c37f934 100644 --- a/gogs.go +++ b/gogs.go @@ -17,7 +17,7 @@ import ( "github.com/gogits/gogs/modules/setting" ) -const APP_VER = "0.9.76.0814" +const APP_VER = "0.9.77.0814" func init() { runtime.GOMAXPROCS(runtime.NumCPU()) diff --git a/models/action.go b/models/action.go index 584543d9c1..c727c05992 100644 --- a/models/action.go +++ b/models/action.go @@ -246,7 +246,7 @@ type PushCommit struct { type PushCommits struct { Len int Commits []*PushCommit - CompareUrl string + CompareURL string avatars map[string]string } @@ -275,12 +275,12 @@ func (pc *PushCommits) ToApiPayloadCommits(repoLink string) []*api.PayloadCommit ID: commit.Sha1, Message: commit.Message, URL: fmt.Sprintf("%s/commit/%s", repoLink, commit.Sha1), - Author: &api.PayloadAuthor{ + Author: &api.PayloadUser{ Name: commit.AuthorName, Email: commit.AuthorEmail, UserName: authorUsername, }, - Committer: &api.PayloadCommitter{ + Committer: &api.PayloadUser{ Name: commit.CommitterName, Email: commit.CommitterEmail, UserName: committerUsername, @@ -475,7 +475,7 @@ func CommitRepoAction( } else { // if not the first commit, set the compareUrl if !strings.HasPrefix(oldCommitID, "0000000") { - commit.CompareUrl = repo.ComposeCompareURL(oldCommitID, newCommitID) + commit.CompareURL = repo.ComposeCompareURL(oldCommitID, newCommitID) } else { isNewBranch = true } @@ -495,7 +495,6 @@ func CommitRepoAction( } refName := git.RefEndName(refFullName) - if err = NotifyWatchers(&Action{ ActUserID: u.ID, ActUserName: userName, @@ -511,35 +510,24 @@ func CommitRepoAction( return fmt.Errorf("NotifyWatchers: %v", err) } - payloadRepo := repo.ComposePayload() - - var pusherEmail, pusherName string pusher, err := GetUserByName(userName) - if err == nil { - pusherEmail = pusher.Email - pusherName = pusher.DisplayName() - } - payloadSender := &api.PayloadUser{ - UserName: pusher.Name, - ID: pusher.ID, - AvatarUrl: pusher.AvatarLink(), + if err != nil { + return fmt.Errorf("GetUserByName: %v", err) } + apiPusher := pusher.APIFormat() + apiRepo := repo.APIFormat(nil) switch opType { case ACTION_COMMIT_REPO: // Push if err = PrepareWebhooks(repo, HOOK_EVENT_PUSH, &api.PushPayload{ Ref: refFullName, Before: oldCommitID, After: newCommitID, - CompareUrl: setting.AppUrl + commit.CompareUrl, + CompareURL: setting.AppUrl + commit.CompareURL, Commits: commit.ToApiPayloadCommits(repo.FullLink()), - Repo: payloadRepo, - Pusher: &api.PayloadAuthor{ - Name: pusherName, - Email: pusherEmail, - UserName: userName, - }, - Sender: payloadSender, + Repo: apiRepo, + Pusher: apiPusher, + Sender: apiPusher, }); err != nil { return fmt.Errorf("PrepareWebhooks: %v", err) } @@ -548,8 +536,8 @@ func CommitRepoAction( return PrepareWebhooks(repo, HOOK_EVENT_CREATE, &api.CreatePayload{ Ref: refName, RefType: "branch", - Repo: payloadRepo, - Sender: payloadSender, + Repo: apiRepo, + Sender: apiPusher, }) } @@ -557,8 +545,8 @@ func CommitRepoAction( return PrepareWebhooks(repo, HOOK_EVENT_CREATE, &api.CreatePayload{ Ref: refName, RefType: "tag", - Repo: payloadRepo, - Sender: payloadSender, + Repo: apiRepo, + Sender: apiPusher, }) } diff --git a/models/pull.go b/models/pull.go index 4a2a376704..d6df00dc7f 100644 --- a/models/pull.go +++ b/models/pull.go @@ -308,22 +308,14 @@ func (pr *PullRequest) Merge(doer *User, baseGitRepo *git.Repository) (err error l.PushFront(mergeCommit) p := &api.PushPayload{ - Ref: "refs/heads/" + pr.BaseBranch, + Ref: git.BRANCH_PREFIX + pr.BaseBranch, Before: pr.MergeBase, After: pr.MergedCommitID, - CompareUrl: setting.AppUrl + pr.BaseRepo.ComposeCompareURL(pr.MergeBase, pr.MergedCommitID), + CompareURL: setting.AppUrl + pr.BaseRepo.ComposeCompareURL(pr.MergeBase, pr.MergedCommitID), Commits: ListToPushCommits(l).ToApiPayloadCommits(pr.BaseRepo.FullLink()), - Repo: pr.BaseRepo.ComposePayload(), - Pusher: &api.PayloadAuthor{ - Name: pr.HeadRepo.MustOwner().DisplayName(), - Email: pr.HeadRepo.MustOwner().Email, - UserName: pr.HeadRepo.MustOwner().Name, - }, - Sender: &api.PayloadUser{ - UserName: doer.Name, - ID: doer.ID, - AvatarUrl: doer.AvatarLink(), - }, + Repo: pr.BaseRepo.APIFormat(nil), + Pusher: pr.HeadRepo.MustOwner().APIFormat(), + Sender: doer.APIFormat(), } if err = PrepareWebhooks(pr.BaseRepo, HOOK_EVENT_PUSH, p); err != nil { return fmt.Errorf("PrepareWebhooks: %v", err) diff --git a/models/repo.go b/models/repo.go index ef8cd34375..f3eb439cac 100644 --- a/models/repo.go +++ b/models/repo.go @@ -482,28 +482,6 @@ func (repo *Repository) SavePatch(index int64, patch []byte) error { return nil } -// ComposePayload composes and returns *api.PayloadRepo corresponding to the repository. -func (repo *Repository) ComposePayload() *api.PayloadRepo { - cl := repo.CloneLink() - return &api.PayloadRepo{ - ID: repo.ID, - Name: repo.Name, - URL: repo.FullLink(), - SSHURL: cl.SSH, - CloneURL: cl.HTTPS, - Description: repo.Description, - Website: repo.Website, - Watchers: repo.NumWatches, - Owner: &api.PayloadAuthor{ - Name: repo.MustOwner().DisplayName(), - Email: repo.MustOwner().Email, - UserName: repo.MustOwner().Name, - }, - Private: repo.IsPrivate, - DefaultBranch: repo.DefaultBranch, - } -} - func isRepositoryExist(e Engine, u *User, repoName string) (bool, error) { has, err := e.Get(&Repository{ OwnerID: u.ID, diff --git a/models/webhook_slack.go b/models/webhook_slack.go index 5578c816a5..edc26a78f3 100644 --- a/models/webhook_slack.go +++ b/models/webhook_slack.go @@ -76,8 +76,8 @@ func getSlackCreatePayload(p *api.CreatePayload, slack *SlackMeta) (*SlackPayloa // created tag/branch refName := git.RefEndName(p.Ref) - repoLink := SlackLinkFormatter(p.Repo.URL, p.Repo.Name) - refLink := SlackLinkFormatter(p.Repo.URL+"/src/"+refName, refName) + repoLink := SlackLinkFormatter(p.Repo.HTMLURL, p.Repo.Name) + refLink := SlackLinkFormatter(p.Repo.HTMLURL+"/src/"+refName, refName) text := fmt.Sprintf("[%s:%s] %s created by %s", repoLink, refLink, p.RefType, p.Sender.UserName) return &SlackPayload{ @@ -101,15 +101,15 @@ func getSlackPushPayload(p *api.PushPayload, slack *SlackMeta) (*SlackPayload, e } else { commitDesc = fmt.Sprintf("%d new commits", len(p.Commits)) } - if len(p.CompareUrl) > 0 { - commitString = SlackLinkFormatter(p.CompareUrl, commitDesc) + if len(p.CompareURL) > 0 { + commitString = SlackLinkFormatter(p.CompareURL, commitDesc) } else { commitString = commitDesc } - repoLink := SlackLinkFormatter(p.Repo.URL, p.Repo.Name) - branchLink := SlackLinkFormatter(p.Repo.URL+"/src/"+branchName, branchName) - text := fmt.Sprintf("[%s:%s] %s pushed by %s", repoLink, branchLink, commitString, p.Pusher.Name) + repoLink := SlackLinkFormatter(p.Repo.HTMLURL, p.Repo.Name) + branchLink := SlackLinkFormatter(p.Repo.HTMLURL+"/src/"+branchName, branchName) + text := fmt.Sprintf("[%s:%s] %s pushed by %s", repoLink, branchLink, commitString, p.Pusher.UserName) var attachmentText string // for each commit, generate attachment text @@ -135,7 +135,7 @@ func getSlackPushPayload(p *api.PushPayload, slack *SlackMeta) (*SlackPayload, e func getSlackPullRequestPayload(p *api.PullRequestPayload, slack *SlackMeta) (*SlackPayload, error) { senderLink := SlackLinkFormatter(setting.AppUrl+p.Sender.UserName, p.Sender.UserName) - titleLink := SlackLinkFormatter(fmt.Sprintf("%s/%d", setting.AppUrl+p.Repository.FullName+"/pulls", p.Index), + titleLink := SlackLinkFormatter(fmt.Sprintf("%s/pulls/%d", p.Repository.HTMLURL, p.Index), fmt.Sprintf("#%d %s", p.Index, p.PullRequest.Title)) var text, title, attachmentText string switch p.Action { diff --git a/routers/api/v1/admin/user.go b/routers/api/v1/admin/user.go index bbf069108c..ca3d67adbf 100644 --- a/routers/api/v1/admin/user.go +++ b/routers/api/v1/admin/user.go @@ -11,7 +11,6 @@ import ( "github.com/gogits/gogs/modules/context" "github.com/gogits/gogs/modules/log" "github.com/gogits/gogs/modules/setting" - "github.com/gogits/gogs/routers/api/v1/convert" "github.com/gogits/gogs/routers/api/v1/user" ) @@ -69,7 +68,7 @@ func CreateUser(ctx *context.APIContext, form api.CreateUserOption) { models.SendRegisterNotifyMail(ctx.Context.Context, u) } - ctx.JSON(201, convert.ToUser(u)) + ctx.JSON(201, u.APIFormat()) } // https://github.com/gogits/go-gogs-client/wiki/Administration-Users#edit-an-existing-user @@ -121,7 +120,7 @@ func EditUser(ctx *context.APIContext, form api.EditUserOption) { } log.Trace("Account profile updated by admin (%s): %s", ctx.User.Name, u.Name) - ctx.JSON(200, convert.ToUser(u)) + ctx.JSON(200, u.APIFormat()) } // https://github.com/gogits/go-gogs-client/wiki/Administration-Users#delete-a-user diff --git a/routers/api/v1/convert/convert.go b/routers/api/v1/convert/convert.go index c3ca9fd5d1..fcadb51fd4 100644 --- a/routers/api/v1/convert/convert.go +++ b/routers/api/v1/convert/convert.go @@ -13,23 +13,8 @@ import ( api "github.com/gogits/go-gogs-client" "github.com/gogits/gogs/models" - "github.com/gogits/gogs/modules/setting" ) -func ToUser(u *models.User) *api.User { - if u == nil { - return nil - } - - return &api.User{ - ID: u.ID, - UserName: u.Name, - FullName: u.FullName, - Email: u.Email, - AvatarUrl: u.AvatarLink(), - } -} - func ToEmail(email *models.EmailAddress) *api.Email { return &api.Email{ Email: email.Email, @@ -38,28 +23,6 @@ func ToEmail(email *models.EmailAddress) *api.Email { } } -func ToRepository(owner *models.User, repo *models.Repository, permission api.Permission) *api.Repository { - cl := repo.CloneLink() - return &api.Repository{ - ID: repo.ID, - Owner: ToUser(owner), - FullName: owner.Name + "/" + repo.Name, - Description: repo.Description, - Private: repo.IsPrivate, - Fork: repo.IsFork, - HTMLURL: setting.AppUrl + owner.Name + "/" + repo.Name, - CloneURL: cl.HTTPS, - SSHURL: cl.SSH, - OpenIssues: repo.NumOpenIssues, - Stars: repo.NumStars, - Forks: repo.NumForks, - Watchers: repo.NumWatches, - Created: repo.Created, - Updated: repo.Updated, - Permissions: &permission, - } -} - func ToBranch(b *models.Branch, c *git.Commit) *api.Branch { return &api.Branch{ Name: b.Name, @@ -82,12 +45,12 @@ func ToCommit(c *git.Commit) *api.PayloadCommit { ID: c.ID.String(), Message: c.Message(), URL: "Not implemented", - Author: &api.PayloadAuthor{ + Author: &api.PayloadUser{ Name: c.Author.Name, Email: c.Author.Email, UserName: authorUsername, }, - Committer: &api.PayloadCommitter{ + Committer: &api.PayloadUser{ Name: c.Committer.Name, Email: c.Committer.Email, UserName: committerUsername, @@ -142,68 +105,6 @@ func ToDeployKey(apiLink string, key *models.DeployKey) *api.DeployKey { } } -func ToLabel(label *models.Label) *api.Label { - return &api.Label{ - ID: label.ID, - Name: label.Name, - Color: label.Color, - } -} - -func ToMilestone(milestone *models.Milestone) *api.Milestone { - if milestone == nil { - return nil - } - - apiMilestone := &api.Milestone{ - ID: milestone.ID, - State: milestone.State(), - Title: milestone.Name, - Description: milestone.Content, - OpenIssues: milestone.NumOpenIssues, - ClosedIssues: milestone.NumClosedIssues, - } - if milestone.IsClosed { - apiMilestone.Closed = &milestone.ClosedDate - } - if milestone.Deadline.Year() < 9999 { - apiMilestone.Deadline = &milestone.Deadline - } - return apiMilestone -} - -func ToIssue(issue *models.Issue) *api.Issue { - apiLabels := make([]*api.Label, len(issue.Labels)) - for i := range issue.Labels { - apiLabels[i] = ToLabel(issue.Labels[i]) - } - - apiIssue := &api.Issue{ - ID: issue.ID, - Index: issue.Index, - State: issue.State(), - Title: issue.Title, - Body: issue.Content, - User: ToUser(issue.Poster), - Labels: apiLabels, - Assignee: ToUser(issue.Assignee), - Milestone: ToMilestone(issue.Milestone), - Comments: issue.NumComments, - Created: issue.Created, - Updated: issue.Updated, - } - if issue.IsPull { - apiIssue.PullRequest = &api.PullRequestMeta{ - HasMerged: issue.PullRequest.HasMerged, - } - if issue.PullRequest.HasMerged { - apiIssue.PullRequest.Merged = &issue.PullRequest.Merged - } - } - - return apiIssue -} - func ToOrganization(org *models.User) *api.Organization { return &api.Organization{ ID: org.ID, diff --git a/routers/api/v1/repo/issue.go b/routers/api/v1/repo/issue.go index 90dc6e78e3..1440a17cdc 100644 --- a/routers/api/v1/repo/issue.go +++ b/routers/api/v1/repo/issue.go @@ -13,7 +13,6 @@ import ( "github.com/gogits/gogs/models" "github.com/gogits/gogs/modules/context" "github.com/gogits/gogs/modules/setting" - "github.com/gogits/gogs/routers/api/v1/convert" ) func ListIssues(ctx *context.APIContext) { @@ -28,7 +27,12 @@ func ListIssues(ctx *context.APIContext) { apiIssues := make([]*api.Issue, len(issues)) for i := range issues { - apiIssues[i] = convert.ToIssue(issues[i]) + // FIXME: use IssueList to improve performance. + if err = issues[i].LoadAttributes(); err != nil { + ctx.Error(500, "LoadAttributes", err) + return + } + apiIssues[i] = issues[i].APIFormat() } ctx.SetLinkHeader(ctx.Repo.Repository.NumIssues, setting.UI.IssuePagingNum) @@ -46,13 +50,13 @@ func GetIssue(ctx *context.APIContext) { return } - ctx.JSON(200, convert.ToIssue(issue)) + ctx.JSON(200, issue.APIFormat()) } func CreateIssue(ctx *context.APIContext, form api.CreateIssueOption) { issue := &models.Issue{ RepoID: ctx.Repo.Repository.ID, - Title: form.Title, + Title: form.Title, PosterID: ctx.User.ID, Poster: ctx.User, Content: form.Body, @@ -83,7 +87,7 @@ func CreateIssue(ctx *context.APIContext, form api.CreateIssueOption) { if form.Closed { if err := issue.ChangeStatus(ctx.User, ctx.Repo.Repository, true); err != nil { - ctx.Error(500, "issue.ChangeStatus", err) + ctx.Error(500, "ChangeStatus", err) return } } @@ -95,7 +99,7 @@ func CreateIssue(ctx *context.APIContext, form api.CreateIssueOption) { ctx.Error(500, "GetIssueByID", err) return } - ctx.JSON(201, convert.ToIssue(issue)) + ctx.JSON(201, issue.APIFormat()) } func EditIssue(ctx *context.APIContext, form api.EditIssueOption) { @@ -164,5 +168,5 @@ func EditIssue(ctx *context.APIContext, form api.EditIssueOption) { ctx.Error(500, "GetIssueByID", err) return } - ctx.JSON(201, convert.ToIssue(issue)) + ctx.JSON(201, issue.APIFormat()) } diff --git a/routers/api/v1/repo/issue_label.go b/routers/api/v1/repo/issue_label.go index b471d4a08d..f1eed2112a 100644 --- a/routers/api/v1/repo/issue_label.go +++ b/routers/api/v1/repo/issue_label.go @@ -9,7 +9,6 @@ import ( "github.com/gogits/gogs/models" "github.com/gogits/gogs/modules/context" - "github.com/gogits/gogs/routers/api/v1/convert" ) func ListIssueLabels(ctx *context.APIContext) { @@ -25,7 +24,7 @@ func ListIssueLabels(ctx *context.APIContext) { apiLabels := make([]*api.Label, len(issue.Labels)) for i := range issue.Labels { - apiLabels[i] = convert.ToLabel(issue.Labels[i]) + apiLabels[i] = issue.Labels[i].APIFormat() } ctx.JSON(200, &apiLabels) } @@ -65,7 +64,7 @@ func AddIssueLabels(ctx *context.APIContext, form api.IssueLabelsOption) { apiLabels := make([]*api.Label, len(labels)) for i := range labels { - apiLabels[i] = convert.ToLabel(labels[i]) + apiLabels[i] = issue.Labels[i].APIFormat() } ctx.JSON(200, &apiLabels) } @@ -139,7 +138,7 @@ func ReplaceIssueLabels(ctx *context.APIContext, form api.IssueLabelsOption) { apiLabels := make([]*api.Label, len(labels)) for i := range labels { - apiLabels[i] = convert.ToLabel(labels[i]) + apiLabels[i] = issue.Labels[i].APIFormat() } ctx.JSON(200, &apiLabels) } diff --git a/routers/api/v1/repo/label.go b/routers/api/v1/repo/label.go index dfd0b1ddda..5c34849385 100644 --- a/routers/api/v1/repo/label.go +++ b/routers/api/v1/repo/label.go @@ -9,7 +9,6 @@ import ( "github.com/gogits/gogs/models" "github.com/gogits/gogs/modules/context" - "github.com/gogits/gogs/routers/api/v1/convert" ) func ListLabels(ctx *context.APIContext) { @@ -21,7 +20,7 @@ func ListLabels(ctx *context.APIContext) { apiLabels := make([]*api.Label, len(labels)) for i := range labels { - apiLabels[i] = convert.ToLabel(labels[i]) + apiLabels[i] = labels[i].APIFormat() } ctx.JSON(200, &apiLabels) } @@ -37,7 +36,7 @@ func GetLabel(ctx *context.APIContext) { return } - ctx.JSON(200, convert.ToLabel(label)) + ctx.JSON(200, label.APIFormat()) } func CreateLabel(ctx *context.APIContext, form api.CreateLabelOption) { @@ -55,7 +54,7 @@ func CreateLabel(ctx *context.APIContext, form api.CreateLabelOption) { ctx.Error(500, "NewLabel", err) return } - ctx.JSON(201, convert.ToLabel(label)) + ctx.JSON(201, label.APIFormat()) } func EditLabel(ctx *context.APIContext, form api.EditLabelOption) { @@ -84,7 +83,7 @@ func EditLabel(ctx *context.APIContext, form api.EditLabelOption) { ctx.Handle(500, "UpdateLabel", err) return } - ctx.JSON(200, convert.ToLabel(label)) + ctx.JSON(200, label.APIFormat()) } func DeleteLabel(ctx *context.APIContext) { diff --git a/routers/api/v1/repo/repo.go b/routers/api/v1/repo/repo.go index e1c1b5760d..cc75f5bf4e 100644 --- a/routers/api/v1/repo/repo.go +++ b/routers/api/v1/repo/repo.go @@ -93,12 +93,12 @@ func ListMyRepos(ctx *context.APIContext) { repos := make([]*api.Repository, numOwnRepos+len(accessibleRepos)) for i := range ownRepos { - repos[i] = convert.ToRepository(ctx.User, ownRepos[i], api.Permission{true, true, true}) + repos[i] = ownRepos[i].APIFormat(&api.Permission{true, true, true}) } i := numOwnRepos for repo, access := range accessibleRepos { - repos[i] = convert.ToRepository(repo.Owner, repo, api.Permission{ + repos[i] = repo.APIFormat(&api.Permission{ Admin: access >= models.ACCESS_MODE_ADMIN, Push: access >= models.ACCESS_MODE_WRITE, Pull: true, @@ -135,7 +135,7 @@ func CreateUserRepo(ctx *context.APIContext, owner *models.User, opt api.CreateR return } - ctx.JSON(201, convert.ToRepository(owner, repo, api.Permission{true, true, true})) + ctx.JSON(201, repo.APIFormat(&api.Permission{true, true, true})) } // https://github.com/gogits/go-gogs-client/wiki/Repositories#create @@ -235,7 +235,7 @@ func Migrate(ctx *context.APIContext, form auth.MigrateRepoForm) { } log.Trace("Repository migrated: %s/%s", ctxUser.Name, form.RepoName) - ctx.JSON(201, convert.ToRepository(ctxUser, repo, api.Permission{true, true, true})) + ctx.JSON(201, repo.APIFormat(&api.Permission{true, true, true})) } func parseOwnerAndRepo(ctx *context.APIContext) (*models.User, *models.Repository) { @@ -264,12 +264,12 @@ func parseOwnerAndRepo(ctx *context.APIContext) (*models.User, *models.Repositor // https://github.com/gogits/go-gogs-client/wiki/Repositories#get func Get(ctx *context.APIContext) { - owner, repo := parseOwnerAndRepo(ctx) + _, repo := parseOwnerAndRepo(ctx) if ctx.Written() { return } - ctx.JSON(200, convert.ToRepository(owner, repo, api.Permission{true, true, true})) + ctx.JSON(200, repo.APIFormat(&api.Permission{true, true, true})) } // https://github.com/gogits/go-gogs-client/wiki/Repositories#delete diff --git a/routers/api/v1/user/follower.go b/routers/api/v1/user/follower.go index 8d103c9e14..58a162444b 100644 --- a/routers/api/v1/user/follower.go +++ b/routers/api/v1/user/follower.go @@ -9,13 +9,12 @@ import ( "github.com/gogits/gogs/models" "github.com/gogits/gogs/modules/context" - "github.com/gogits/gogs/routers/api/v1/convert" ) func responseApiUsers(ctx *context.APIContext, users []*models.User) { apiUsers := make([]*api.User, len(users)) for i := range users { - apiUsers[i] = convert.ToUser(users[i]) + apiUsers[i] = users[i].APIFormat() } ctx.JSON(200, &apiUsers) } diff --git a/routers/api/v1/user/user.go b/routers/api/v1/user/user.go index 87a9c08623..b526af5da7 100644 --- a/routers/api/v1/user/user.go +++ b/routers/api/v1/user/user.go @@ -11,7 +11,6 @@ import ( "github.com/gogits/gogs/models" "github.com/gogits/gogs/modules/context" - "github.com/gogits/gogs/routers/api/v1/convert" ) func Search(ctx *context.APIContext) { @@ -67,9 +66,9 @@ func GetInfo(ctx *context.APIContext) { if !ctx.IsSigned { u.Email = "" } - ctx.JSON(200, convert.ToUser(u)) + ctx.JSON(200, u.APIFormat()) } func GetAuthenticatedUser(ctx *context.APIContext) { - ctx.JSON(200, convert.ToUser(ctx.User)) + ctx.JSON(200, ctx.User.APIFormat()) } diff --git a/routers/repo/http.go b/routers/repo/http.go index 0615143e38..89a9b1b9ee 100644 --- a/routers/repo/http.go +++ b/routers/repo/http.go @@ -20,6 +20,8 @@ import ( "strings" "time" + git "github.com/gogits/git-module" + "github.com/gogits/gogs/models" "github.com/gogits/gogs/modules/base" "github.com/gogits/gogs/modules/context" @@ -206,7 +208,7 @@ func HTTP(ctx *context.Context) { RepoName: reponame, }); err == nil { go models.HookQueue.Add(repo.ID) - go models.AddTestPullRequestTask(authUser, repo.ID, strings.TrimPrefix(refName, "refs/heads/"), true) + go models.AddTestPullRequestTask(authUser, repo.ID, strings.TrimPrefix(refName, git.BRANCH_PREFIX), true) } } diff --git a/routers/repo/webhook.go b/routers/repo/webhook.go index 9b4c33e4b6..8f6ee3f06c 100644 --- a/routers/repo/webhook.go +++ b/routers/repo/webhook.go @@ -347,6 +347,7 @@ func SlackHooksEditPost(ctx *context.Context, form auth.NewSlackHookForm) { } func TestWebhook(ctx *context.Context) { + apiUser := ctx.User.APIFormat() p := &api.PushPayload{ Ref: git.BRANCH_PREFIX + ctx.Repo.Repository.DefaultBranch, Before: ctx.Repo.CommitID, @@ -356,27 +357,19 @@ func TestWebhook(ctx *context.Context) { ID: ctx.Repo.CommitID, Message: ctx.Repo.Commit.Message(), URL: ctx.Repo.Repository.FullLink() + "/commit/" + ctx.Repo.CommitID, - Author: &api.PayloadAuthor{ + Author: &api.PayloadUser{ Name: ctx.Repo.Commit.Author.Name, Email: ctx.Repo.Commit.Author.Email, }, - Committer: &api.PayloadCommitter{ + Committer: &api.PayloadUser{ Name: ctx.Repo.Commit.Committer.Name, Email: ctx.Repo.Commit.Committer.Email, }, }, }, - Repo: ctx.Repo.Repository.ComposePayload(), - Pusher: &api.PayloadAuthor{ - Name: ctx.User.Name, - Email: ctx.User.Email, - UserName: ctx.User.Name, - }, - Sender: &api.PayloadUser{ - UserName: ctx.User.Name, - ID: ctx.User.ID, - AvatarUrl: ctx.User.AvatarLink(), - }, + Repo: ctx.Repo.Repository.APIFormat(nil), + Pusher: apiUser, + Sender: apiUser, } if err := models.PrepareWebhooks(ctx.Repo.Repository, models.HOOK_EVENT_PUSH, p); err != nil { ctx.Flash.Error("PrepareWebhooks: " + err.Error()) diff --git a/templates/.VERSION b/templates/.VERSION index 5e537303e3..cfaf5e6915 100644 --- a/templates/.VERSION +++ b/templates/.VERSION @@ -1 +1 @@ -0.9.76.0814 \ No newline at end of file +0.9.77.0814 \ No newline at end of file