]> source.dussan.org Git - gitea.git/commitdiff
[Refactor] Move APIFormat functions into convert package (#12856)
author6543 <6543@obermui.de>
Sat, 17 Oct 2020 04:23:08 +0000 (06:23 +0200)
committerGitHub <noreply@github.com>
Sat, 17 Oct 2020 04:23:08 +0000 (00:23 -0400)
* USER APIFormat -> ToUser

* Migrate more and mark APIFormat deprecated

* models.Comment APIFormat() -> convert.ToComment

* models.Release APIFormat() -> convert.ToRelease

* models.Attachments APIFormat() -> convert.ToReleaseAttachments

* models.CommitStatus APIFormat() -> convert.ToCommitStatus

* finish migration to convert.ToUser

* Move Test

* Imprufe Test

* fix test

Co-authored-by: techknowlogick <techknowlogick@gitea.io>
28 files changed:
integrations/api_comment_test.go
integrations/api_issue_reaction_test.go
models/attachment.go
models/commit_status.go
models/issue_comment.go
models/release.go
models/repo.go
models/user.go
models/user_test.go
models/userlist.go
modules/convert/convert.go
modules/convert/git_commit.go
modules/convert/issue.go
modules/convert/issue_comment.go [new file with mode: 0644]
modules/convert/pull.go
modules/convert/release.go [new file with mode: 0644]
modules/convert/user.go
modules/convert/user_test.go [new file with mode: 0644]
modules/notification/webhook/webhook.go
routers/api/v1/repo/issue_comment.go
routers/api/v1/repo/issue_reaction.go
routers/api/v1/repo/issue_subscription.go
routers/api/v1/repo/release.go
routers/api/v1/repo/release_attachment.go
routers/api/v1/repo/release_tags.go
routers/api/v1/repo/status.go
routers/repo/issue.go
routers/repo/webhook.go

index 2c754272e5687b9a4bc194e97bd27a70539d3d11..f64f4a1c9c0f24bd4b42fc90943007c021173341 100644 (file)
@@ -11,6 +11,7 @@ import (
        "testing"
 
        "code.gitea.io/gitea/models"
+       "code.gitea.io/gitea/modules/convert"
        api "code.gitea.io/gitea/modules/structs"
 
        "github.com/stretchr/testify/assert"
@@ -125,7 +126,7 @@ func TestAPIGetComment(t *testing.T) {
        DecodeJSON(t, resp, &apiComment)
 
        assert.NoError(t, comment.LoadPoster())
-       expect := comment.APIFormat()
+       expect := convert.ToComment(comment)
 
        assert.Equal(t, expect.ID, apiComment.ID)
        assert.Equal(t, expect.Poster.FullName, apiComment.Poster.FullName)
index 1906b8d09082c48e1e811f759fd808cd5c569439..20b83db2aab6929a6b39359b74daa35c1db2b726 100644 (file)
@@ -11,6 +11,7 @@ import (
        "time"
 
        "code.gitea.io/gitea/models"
+       "code.gitea.io/gitea/modules/convert"
        api "code.gitea.io/gitea/modules/structs"
 
        "github.com/stretchr/testify/assert"
@@ -60,7 +61,7 @@ func TestAPIIssuesReactions(t *testing.T) {
        DecodeJSON(t, resp, &apiReactions)
        expectResponse := make(map[int]api.Reaction)
        expectResponse[0] = api.Reaction{
-               User:     user2.APIFormat(),
+               User:     convert.ToUser(user2, true, true),
                Reaction: "eyes",
                Created:  time.Unix(1573248003, 0),
        }
@@ -120,12 +121,12 @@ func TestAPICommentReactions(t *testing.T) {
        DecodeJSON(t, resp, &apiReactions)
        expectResponse := make(map[int]api.Reaction)
        expectResponse[0] = api.Reaction{
-               User:     user2.APIFormat(),
+               User:     convert.ToUser(user2, true, true),
                Reaction: "laugh",
                Created:  time.Unix(1573248004, 0),
        }
        expectResponse[1] = api.Reaction{
-               User:     user1.APIFormat(),
+               User:     convert.ToUser(user1, true, true),
                Reaction: "laugh",
                Created:  time.Unix(1573248005, 0),
        }
index 26f466a4008b9c4ec787e01461db1dfaf8623fd2..55a6cfc014b989fcb515dcb10e038c56d70750e0 100644 (file)
@@ -12,7 +12,6 @@ import (
 
        "code.gitea.io/gitea/modules/setting"
        "code.gitea.io/gitea/modules/storage"
-       api "code.gitea.io/gitea/modules/structs"
        "code.gitea.io/gitea/modules/timeutil"
 
        gouuid "github.com/google/uuid"
@@ -43,19 +42,6 @@ func (a *Attachment) IncreaseDownloadCount() error {
        return nil
 }
 
-// APIFormat converts models.Attachment to api.Attachment
-func (a *Attachment) APIFormat() *api.Attachment {
-       return &api.Attachment{
-               ID:            a.ID,
-               Name:          a.Name,
-               Created:       a.CreatedUnix.AsTime(),
-               DownloadCount: a.DownloadCount,
-               Size:          a.Size,
-               UUID:          a.UUID,
-               DownloadURL:   a.DownloadURL(),
-       }
-}
-
 // AttachmentRelativePath returns the relative path
 func AttachmentRelativePath(uuid string) string {
        return path.Join(uuid[0:1], uuid[1:2], uuid)
index ed6f8702c5ce5880833f5db3fb12f3f8fffa512d..15fcbff6f91963f32678131349893d3d34ae6515 100644 (file)
@@ -61,27 +61,6 @@ func (status *CommitStatus) APIURL() string {
                setting.AppURL, status.Repo.FullName(), status.SHA)
 }
 
-// APIFormat assumes some fields assigned with values:
-// Required - Repo, Creator
-func (status *CommitStatus) APIFormat() *api.Status {
-       _ = status.loadRepo(x)
-       apiStatus := &api.Status{
-               Created:     status.CreatedUnix.AsTime(),
-               Updated:     status.CreatedUnix.AsTime(),
-               State:       api.StatusState(status.State),
-               TargetURL:   status.TargetURL,
-               Description: status.Description,
-               ID:          status.Index,
-               URL:         status.APIURL(),
-               Context:     status.Context,
-       }
-       if status.Creator != nil {
-               apiStatus.Creator = status.Creator.APIFormat()
-       }
-
-       return apiStatus
-}
-
 // CalcCommitStatus returns commit status state via some status, the commit statues should order by id desc
 func CalcCommitStatus(statuses []*CommitStatus) *CommitStatus {
        var lastStatus *CommitStatus
index 270a10e24014171ac26f7de38c561cb7d87c63e0..5c053ec02a28aec7a1c4b65ca3b22778de041133 100644 (file)
@@ -20,7 +20,6 @@ import (
        "code.gitea.io/gitea/modules/markup/markdown"
        "code.gitea.io/gitea/modules/references"
        "code.gitea.io/gitea/modules/structs"
-       api "code.gitea.io/gitea/modules/structs"
        "code.gitea.io/gitea/modules/timeutil"
 
        "github.com/unknwon/com"
@@ -354,20 +353,6 @@ func (c *Comment) PRURL() string {
        return c.Issue.HTMLURL()
 }
 
-// APIFormat converts a Comment to the api.Comment format
-func (c *Comment) APIFormat() *api.Comment {
-       return &api.Comment{
-               ID:       c.ID,
-               Poster:   c.Poster.APIFormat(),
-               HTMLURL:  c.HTMLURL(),
-               IssueURL: c.IssueURL(),
-               PRURL:    c.PRURL(),
-               Body:     c.Content,
-               Created:  c.CreatedUnix.AsTime(),
-               Updated:  c.UpdatedUnix.AsTime(),
-       }
-}
-
 // CommentHashTag returns unique hash tag for comment id.
 func CommentHashTag(id int64) string {
        return fmt.Sprintf("issuecomment-%d", id)
index f55341b86bb106a7511df0fd83daff29b529d722..b8ffb257a29a2d2e9bfa250173e1653407d04164 100644 (file)
@@ -12,7 +12,6 @@ import (
 
        "code.gitea.io/gitea/modules/setting"
        "code.gitea.io/gitea/modules/structs"
-       api "code.gitea.io/gitea/modules/structs"
        "code.gitea.io/gitea/modules/timeutil"
 
        "xorm.io/builder"
@@ -86,31 +85,6 @@ func (r *Release) HTMLURL() string {
        return fmt.Sprintf("%s/releases/tag/%s", r.Repo.HTMLURL(), r.TagName)
 }
 
-// APIFormat convert a Release to api.Release
-func (r *Release) APIFormat() *api.Release {
-       assets := make([]*api.Attachment, 0)
-       for _, att := range r.Attachments {
-               assets = append(assets, att.APIFormat())
-       }
-       return &api.Release{
-               ID:           r.ID,
-               TagName:      r.TagName,
-               Target:       r.Target,
-               Title:        r.Title,
-               Note:         r.Note,
-               URL:          r.APIURL(),
-               HTMLURL:      r.HTMLURL(),
-               TarURL:       r.TarURL(),
-               ZipURL:       r.ZipURL(),
-               IsDraft:      r.IsDraft,
-               IsPrerelease: r.IsPrerelease,
-               CreatedAt:    r.CreatedUnix.AsTime(),
-               PublishedAt:  r.CreatedUnix.AsTime(),
-               Publisher:    r.Publisher.APIFormat(),
-               Attachments:  assets,
-       }
-}
-
 // IsReleaseExist returns true if release with given tag name already exists.
 func IsReleaseExist(repoID int64, tagName string) (bool, error) {
        if len(tagName) == 0 {
index efdd7049de4ac0a0e8b9a24ea15241f1bc6639fb..519802632902d02bc8ef3a8ca36a39c6b61f70a7 100644 (file)
@@ -410,8 +410,17 @@ func (repo *Repository) innerAPIFormat(e Engine, mode AccessMode, isParent bool)
        numReleases, _ := GetReleaseCountByRepoID(repo.ID, FindReleasesOptions{IncludeDrafts: false, IncludeTags: true})
 
        return &api.Repository{
-               ID:                        repo.ID,
-               Owner:                     repo.Owner.APIFormat(),
+               ID: repo.ID,
+               // TODO use convert.ToUser(repo.Owner)
+               Owner: &api.User{
+                       ID:        repo.Owner.ID,
+                       UserName:  repo.Owner.Name,
+                       FullName:  repo.Owner.FullName,
+                       Email:     repo.Owner.GetEmail(),
+                       AvatarURL: repo.Owner.AvatarLink(),
+                       LastLogin: repo.Owner.LastLoginUnix.AsTime(),
+                       Created:   repo.Owner.CreatedUnix.AsTime(),
+               },
                Name:                      repo.Name,
                FullName:                  repo.FullName(),
                Description:               repo.Description,
index f019475298e3fdf9302b7eb0ace40ed4a15950dd..2e38502c5b0da613d6b1f2dcc046059ba709dd42 100644 (file)
@@ -29,7 +29,6 @@ import (
        "code.gitea.io/gitea/modules/setting"
        "code.gitea.io/gitea/modules/storage"
        "code.gitea.io/gitea/modules/structs"
-       api "code.gitea.io/gitea/modules/structs"
        "code.gitea.io/gitea/modules/timeutil"
        "code.gitea.io/gitea/modules/util"
 
@@ -241,24 +240,6 @@ func GetAllUsers() ([]*User, error) {
        return users, x.OrderBy("id").Find(&users)
 }
 
-// APIFormat converts a User to api.User
-func (u *User) APIFormat() *api.User {
-       if u == nil {
-               return nil
-       }
-       return &api.User{
-               ID:        u.ID,
-               UserName:  u.Name,
-               FullName:  u.FullName,
-               Email:     u.GetEmail(),
-               AvatarURL: u.AvatarLink(),
-               Language:  u.Language,
-               IsAdmin:   u.IsAdmin,
-               LastLogin: u.LastLoginUnix.AsTime(),
-               Created:   u.CreatedUnix.AsTime(),
-       }
-}
-
 // IsLocal returns true if user login type is LoginPlain.
 func (u *User) IsLocal() bool {
        return u.LoginType <= LoginPlain
index d03ef4fad4dc0fe61da05fff15c78512aac0bbd9..7a6f5aa5122b7d5fac866f9eb0efa88959904414 100644 (file)
@@ -78,23 +78,6 @@ func TestGetUserEmailsByNames(t *testing.T) {
        assert.Equal(t, []string{"user8@example.com"}, GetUserEmailsByNames([]string{"user8", "user7"}))
 }
 
-func TestUser_APIFormat(t *testing.T) {
-
-       user, err := GetUserByID(1)
-       assert.NoError(t, err)
-       assert.True(t, user.IsAdmin)
-
-       apiUser := user.APIFormat()
-       assert.True(t, apiUser.IsAdmin)
-
-       user, err = GetUserByID(2)
-       assert.NoError(t, err)
-       assert.False(t, user.IsAdmin)
-
-       apiUser = user.APIFormat()
-       assert.False(t, apiUser.IsAdmin)
-}
-
 func TestCanCreateOrganization(t *testing.T) {
        assert.NoError(t, PrepareTestDatabase())
 
index 7e6cab50baf1d69ee30aa100eeb926f48b34ca22..a2a424848227b1dce95684d2a455d2d4900e4979 100644 (file)
@@ -8,7 +8,6 @@ import (
        "fmt"
 
        "code.gitea.io/gitea/modules/log"
-       api "code.gitea.io/gitea/modules/structs"
 )
 
 //UserList is a list of user.
@@ -94,12 +93,3 @@ func (users UserList) loadTwoFactorStatus(e Engine) (map[int64]*TwoFactor, error
        }
        return tokenMaps, nil
 }
-
-//APIFormat return list of users in api format
-func (users UserList) APIFormat() []*api.User {
-       result := make([]*api.User, 0, len(users))
-       for _, u := range users {
-               result = append(result, u.APIFormat())
-       }
-       return result
-}
index ec676002b93f7f2be712906aa301f8b6589d4918..e81df0c0c3c707e1e805a639a9178ab2c8840c78 100644 (file)
@@ -339,3 +339,24 @@ func ToOAuth2Application(app *models.OAuth2Application) *api.OAuth2Application {
                Created:      app.CreatedUnix.AsTime(),
        }
 }
+
+// ToCommitStatus converts models.CommitStatus to api.Status
+func ToCommitStatus(status *models.CommitStatus) *api.Status {
+       apiStatus := &api.Status{
+               Created:     status.CreatedUnix.AsTime(),
+               Updated:     status.CreatedUnix.AsTime(),
+               State:       api.StatusState(status.State),
+               TargetURL:   status.TargetURL,
+               Description: status.Description,
+               ID:          status.Index,
+               URL:         status.APIURL(),
+               Context:     status.Context,
+       }
+
+       if status.CreatorID != 0 {
+               creator, _ := models.GetUserByID(status.CreatorID)
+               apiStatus.Creator = ToUser(creator, false, false)
+       }
+
+       return apiStatus
+}
index 86d6dae96176818b777c67bd76e2bea6554108ab..87dfb51e706881a9a03ad4ea8e4b7e4ed04eede1 100644 (file)
@@ -86,13 +86,13 @@ func ToCommit(repo *models.Repository, commit *git.Commit, userCache map[string]
        }
 
        if ok {
-               apiAuthor = cacheAuthor.APIFormat()
+               apiAuthor = ToUser(cacheAuthor, false, false)
        } else {
                author, err := models.GetUserByEmail(commit.Author.Email)
                if err != nil && !models.IsErrUserNotExist(err) {
                        return nil, err
                } else if err == nil {
-                       apiAuthor = author.APIFormat()
+                       apiAuthor = ToUser(author, false, false)
                        if userCache != nil {
                                userCache[commit.Author.Email] = author
                        }
@@ -108,13 +108,13 @@ func ToCommit(repo *models.Repository, commit *git.Commit, userCache map[string]
        }
 
        if ok {
-               apiCommitter = cacheCommitter.APIFormat()
+               apiCommitter = ToUser(cacheCommitter, false, false)
        } else {
                committer, err := models.GetUserByEmail(commit.Committer.Email)
                if err != nil && !models.IsErrUserNotExist(err) {
                        return nil, err
                } else if err == nil {
-                       apiCommitter = committer.APIFormat()
+                       apiCommitter = ToUser(committer, false, false)
                        if userCache != nil {
                                userCache[commit.Committer.Email] = committer
                        }
index 724ec8ffcf67f40006ca67bf57779065be93a66b..f34656b47c1c7ca041b57e3bb92b4358c2367e27 100644 (file)
@@ -31,7 +31,7 @@ func ToAPIIssue(issue *models.Issue) *api.Issue {
                URL:      issue.APIURL(),
                HTMLURL:  issue.HTMLURL(),
                Index:    issue.Index,
-               Poster:   issue.Poster.APIFormat(),
+               Poster:   ToUser(issue.Poster, false, false),
                Title:    issue.Title,
                Body:     issue.Content,
                Labels:   ToLabelList(issue.Labels),
@@ -65,9 +65,9 @@ func ToAPIIssue(issue *models.Issue) *api.Issue {
        }
        if len(issue.Assignees) > 0 {
                for _, assignee := range issue.Assignees {
-                       apiIssue.Assignees = append(apiIssue.Assignees, assignee.APIFormat())
+                       apiIssue.Assignees = append(apiIssue.Assignees, ToUser(assignee, false, false))
                }
-               apiIssue.Assignee = issue.Assignees[0].APIFormat() // For compatibility, we're keeping the first assignee as `apiIssue.Assignee`
+               apiIssue.Assignee = ToUser(issue.Assignees[0], false, false) // For compatibility, we're keeping the first assignee as `apiIssue.Assignee`
        }
        if issue.IsPull {
                if err := issue.LoadPullRequest(); err != nil {
diff --git a/modules/convert/issue_comment.go b/modules/convert/issue_comment.go
new file mode 100644 (file)
index 0000000..cf65c87
--- /dev/null
@@ -0,0 +1,24 @@
+// Copyright 2020 The Gitea Authors. All rights reserved.
+// Use of this source code is governed by a MIT-style
+// license that can be found in the LICENSE file.
+
+package convert
+
+import (
+       "code.gitea.io/gitea/models"
+       api "code.gitea.io/gitea/modules/structs"
+)
+
+// ToComment converts a models.Comment to the api.Comment format
+func ToComment(c *models.Comment) *api.Comment {
+       return &api.Comment{
+               ID:       c.ID,
+               Poster:   ToUser(c.Poster, false, false),
+               HTMLURL:  c.HTMLURL(),
+               IssueURL: c.IssueURL(),
+               PRURL:    c.PRURL(),
+               Body:     c.Content,
+               Created:  c.CreatedUnix.AsTime(),
+               Updated:  c.UpdatedUnix.AsTime(),
+       }
+}
index 2fa22efcb3888a82fc22d4d206b88830b1f28da1..e522bee787b3ad4dd272dfacff23639a78096c58 100644 (file)
@@ -141,7 +141,7 @@ func ToAPIPullRequest(pr *models.PullRequest) *api.PullRequest {
        if pr.HasMerged {
                apiPullRequest.Merged = pr.MergedUnix.AsTimePtr()
                apiPullRequest.MergedCommitID = &pr.MergedCommitID
-               apiPullRequest.MergedBy = pr.Merger.APIFormat()
+               apiPullRequest.MergedBy = ToUser(pr.Merger, false, false)
        }
 
        return apiPullRequest
diff --git a/modules/convert/release.go b/modules/convert/release.go
new file mode 100644 (file)
index 0000000..d9def89
--- /dev/null
@@ -0,0 +1,48 @@
+// Copyright 2020 The Gitea Authors. All rights reserved.
+// Use of this source code is governed by a MIT-style
+// license that can be found in the LICENSE file.
+
+package convert
+
+import (
+       "code.gitea.io/gitea/models"
+       api "code.gitea.io/gitea/modules/structs"
+)
+
+// ToRelease convert a models.Release to api.Release
+func ToRelease(r *models.Release) *api.Release {
+       assets := make([]*api.Attachment, 0)
+       for _, att := range r.Attachments {
+               assets = append(assets, ToReleaseAttachment(att))
+       }
+       return &api.Release{
+               ID:           r.ID,
+               TagName:      r.TagName,
+               Target:       r.Target,
+               Title:        r.Title,
+               Note:         r.Note,
+               URL:          r.APIURL(),
+               HTMLURL:      r.HTMLURL(),
+               TarURL:       r.TarURL(),
+               ZipURL:       r.ZipURL(),
+               IsDraft:      r.IsDraft,
+               IsPrerelease: r.IsPrerelease,
+               CreatedAt:    r.CreatedUnix.AsTime(),
+               PublishedAt:  r.CreatedUnix.AsTime(),
+               Publisher:    ToUser(r.Publisher, false, false),
+               Attachments:  assets,
+       }
+}
+
+// ToReleaseAttachment converts models.Attachment to api.Attachment
+func ToReleaseAttachment(a *models.Attachment) *api.Attachment {
+       return &api.Attachment{
+               ID:            a.ID,
+               Name:          a.Name,
+               Created:       a.CreatedUnix.AsTime(),
+               DownloadCount: a.DownloadCount,
+               Size:          a.Size,
+               UUID:          a.UUID,
+               DownloadURL:   a.DownloadURL(),
+       }
+}
index c75a8aac52504bf02e5e66567ef5a7670a325ee3..010c92b969bb4f38a37b24166d720e30668a04d9 100644 (file)
@@ -13,6 +13,9 @@ import (
 // ToUser convert models.User to api.User
 // signed shall only be set if requester is logged in. authed shall only be set if user is site admin or user himself
 func ToUser(user *models.User, signed, authed bool) *api.User {
+       if user == nil {
+               return nil
+       }
        result := &api.User{
                ID:        user.ID,
                UserName:  user.Name,
diff --git a/modules/convert/user_test.go b/modules/convert/user_test.go
new file mode 100644 (file)
index 0000000..eff60d5
--- /dev/null
@@ -0,0 +1,28 @@
+// Copyright 2020 The Gitea Authors. All rights reserved.
+// Use of this source code is governed by a MIT-style
+// license that can be found in the LICENSE file.
+
+package convert
+
+import (
+       "testing"
+
+       "code.gitea.io/gitea/models"
+       "github.com/stretchr/testify/assert"
+)
+
+func TestUser_ToUser(t *testing.T) {
+
+       user1 := models.AssertExistsAndLoadBean(t, &models.User{ID: 1, IsAdmin: true}).(*models.User)
+
+       apiUser := ToUser(user1, true, true)
+       assert.True(t, apiUser.IsAdmin)
+
+       user2 := models.AssertExistsAndLoadBean(t, &models.User{ID: 2, IsAdmin: false}).(*models.User)
+
+       apiUser = ToUser(user2, true, true)
+       assert.False(t, apiUser.IsAdmin)
+
+       apiUser = ToUser(user1, false, false)
+       assert.False(t, apiUser.IsAdmin)
+}
index c8b6bae724858c025a7000447697c48fc33a2f52..231112ec4c6c262872e0c255f808d59135479017 100644 (file)
@@ -53,7 +53,7 @@ func (m *webhookNotifier) NotifyIssueClearLabels(doer *models.User, issue *model
                        Index:       issue.Index,
                        PullRequest: convert.ToAPIPullRequest(issue.PullRequest),
                        Repository:  issue.Repo.APIFormat(mode),
-                       Sender:      doer.APIFormat(),
+                       Sender:      convert.ToUser(doer, false, false),
                })
        } else {
                err = webhook_module.PrepareWebhooks(issue.Repo, models.HookEventIssueLabel, &api.IssuePayload{
@@ -61,7 +61,7 @@ func (m *webhookNotifier) NotifyIssueClearLabels(doer *models.User, issue *model
                        Index:      issue.Index,
                        Issue:      convert.ToAPIIssue(issue),
                        Repository: issue.Repo.APIFormat(mode),
-                       Sender:     doer.APIFormat(),
+                       Sender:     convert.ToUser(doer, false, false),
                })
        }
        if err != nil {
@@ -77,7 +77,7 @@ func (m *webhookNotifier) NotifyForkRepository(doer *models.User, oldRepo, repo
        if err := webhook_module.PrepareWebhooks(oldRepo, models.HookEventFork, &api.ForkPayload{
                Forkee: oldRepo.APIFormat(oldMode),
                Repo:   repo.APIFormat(mode),
-               Sender: doer.APIFormat(),
+               Sender: convert.ToUser(doer, false, false),
        }); err != nil {
                log.Error("PrepareWebhooks [repo_id: %d]: %v", oldRepo.ID, err)
        }
@@ -89,8 +89,8 @@ func (m *webhookNotifier) NotifyForkRepository(doer *models.User, oldRepo, repo
                if err := webhook_module.PrepareWebhooks(repo, models.HookEventRepository, &api.RepositoryPayload{
                        Action:       api.HookRepoCreated,
                        Repository:   repo.APIFormat(models.AccessModeOwner),
-                       Organization: u.APIFormat(),
-                       Sender:       doer.APIFormat(),
+                       Organization: convert.ToUser(u, false, false),
+                       Sender:       convert.ToUser(doer, false, false),
                }); err != nil {
                        log.Error("PrepareWebhooks [repo_id: %d]: %v", repo.ID, err)
                }
@@ -102,8 +102,8 @@ func (m *webhookNotifier) NotifyCreateRepository(doer *models.User, u *models.Us
        if err := webhook_module.PrepareWebhooks(repo, models.HookEventRepository, &api.RepositoryPayload{
                Action:       api.HookRepoCreated,
                Repository:   repo.APIFormat(models.AccessModeOwner),
-               Organization: u.APIFormat(),
-               Sender:       doer.APIFormat(),
+               Organization: convert.ToUser(u, false, false),
+               Sender:       convert.ToUser(doer, false, false),
        }); err != nil {
                log.Error("PrepareWebhooks [repo_id: %d]: %v", repo.ID, err)
        }
@@ -115,8 +115,8 @@ func (m *webhookNotifier) NotifyDeleteRepository(doer *models.User, repo *models
        if err := webhook_module.PrepareWebhooks(repo, models.HookEventRepository, &api.RepositoryPayload{
                Action:       api.HookRepoDeleted,
                Repository:   repo.APIFormat(models.AccessModeOwner),
-               Organization: u.APIFormat(),
-               Sender:       doer.APIFormat(),
+               Organization: convert.ToUser(u, false, false),
+               Sender:       convert.ToUser(doer, false, false),
        }); err != nil {
                log.Error("PrepareWebhooks [repo_id: %d]: %v", repo.ID, err)
        }
@@ -135,7 +135,7 @@ func (m *webhookNotifier) NotifyIssueChangeAssignee(doer *models.User, issue *mo
                        Index:       issue.Index,
                        PullRequest: convert.ToAPIPullRequest(issue.PullRequest),
                        Repository:  issue.Repo.APIFormat(mode),
-                       Sender:      doer.APIFormat(),
+                       Sender:      convert.ToUser(doer, false, false),
                }
                if removed {
                        apiPullRequest.Action = api.HookIssueUnassigned
@@ -153,7 +153,7 @@ func (m *webhookNotifier) NotifyIssueChangeAssignee(doer *models.User, issue *mo
                        Index:      issue.Index,
                        Issue:      convert.ToAPIIssue(issue),
                        Repository: issue.Repo.APIFormat(mode),
-                       Sender:     doer.APIFormat(),
+                       Sender:     convert.ToUser(doer, false, false),
                }
                if removed {
                        apiIssue.Action = api.HookIssueUnassigned
@@ -187,7 +187,7 @@ func (m *webhookNotifier) NotifyIssueChangeTitle(doer *models.User, issue *model
                        },
                        PullRequest: convert.ToAPIPullRequest(issue.PullRequest),
                        Repository:  issue.Repo.APIFormat(mode),
-                       Sender:      doer.APIFormat(),
+                       Sender:      convert.ToUser(doer, false, false),
                })
        } else {
                err = webhook_module.PrepareWebhooks(issue.Repo, models.HookEventIssues, &api.IssuePayload{
@@ -200,7 +200,7 @@ func (m *webhookNotifier) NotifyIssueChangeTitle(doer *models.User, issue *model
                        },
                        Issue:      convert.ToAPIIssue(issue),
                        Repository: issue.Repo.APIFormat(mode),
-                       Sender:     issue.Poster.APIFormat(),
+                       Sender:     convert.ToUser(issue.Poster, false, false),
                })
        }
 
@@ -222,7 +222,7 @@ func (m *webhookNotifier) NotifyIssueChangeStatus(doer *models.User, issue *mode
                        Index:       issue.Index,
                        PullRequest: convert.ToAPIPullRequest(issue.PullRequest),
                        Repository:  issue.Repo.APIFormat(mode),
-                       Sender:      doer.APIFormat(),
+                       Sender:      convert.ToUser(doer, false, false),
                }
                if isClosed {
                        apiPullRequest.Action = api.HookIssueClosed
@@ -235,7 +235,7 @@ func (m *webhookNotifier) NotifyIssueChangeStatus(doer *models.User, issue *mode
                        Index:      issue.Index,
                        Issue:      convert.ToAPIIssue(issue),
                        Repository: issue.Repo.APIFormat(mode),
-                       Sender:     doer.APIFormat(),
+                       Sender:     convert.ToUser(doer, false, false),
                }
                if isClosed {
                        apiIssue.Action = api.HookIssueClosed
@@ -265,7 +265,7 @@ func (m *webhookNotifier) NotifyNewIssue(issue *models.Issue) {
                Index:      issue.Index,
                Issue:      convert.ToAPIIssue(issue),
                Repository: issue.Repo.APIFormat(mode),
-               Sender:     issue.Poster.APIFormat(),
+               Sender:     convert.ToUser(issue.Poster, false, false),
        }); err != nil {
                log.Error("PrepareWebhooks: %v", err)
        }
@@ -291,7 +291,7 @@ func (m *webhookNotifier) NotifyNewPullRequest(pull *models.PullRequest) {
                Index:       pull.Issue.Index,
                PullRequest: convert.ToAPIPullRequest(pull),
                Repository:  pull.Issue.Repo.APIFormat(mode),
-               Sender:      pull.Issue.Poster.APIFormat(),
+               Sender:      convert.ToUser(pull.Issue.Poster, false, false),
        }); err != nil {
                log.Error("PrepareWebhooks: %v", err)
        }
@@ -312,7 +312,7 @@ func (m *webhookNotifier) NotifyIssueChangeContent(doer *models.User, issue *mod
                        },
                        PullRequest: convert.ToAPIPullRequest(issue.PullRequest),
                        Repository:  issue.Repo.APIFormat(mode),
-                       Sender:      doer.APIFormat(),
+                       Sender:      convert.ToUser(doer, false, false),
                })
        } else {
                err = webhook_module.PrepareWebhooks(issue.Repo, models.HookEventIssues, &api.IssuePayload{
@@ -325,7 +325,7 @@ func (m *webhookNotifier) NotifyIssueChangeContent(doer *models.User, issue *mod
                        },
                        Issue:      convert.ToAPIIssue(issue),
                        Repository: issue.Repo.APIFormat(mode),
-                       Sender:     doer.APIFormat(),
+                       Sender:     convert.ToUser(doer, false, false),
                })
        }
        if err != nil {
@@ -355,28 +355,28 @@ func (m *webhookNotifier) NotifyUpdateComment(doer *models.User, c *models.Comme
                err = webhook_module.PrepareWebhooks(c.Issue.Repo, models.HookEventPullRequestComment, &api.IssueCommentPayload{
                        Action:  api.HookIssueCommentEdited,
                        Issue:   convert.ToAPIIssue(c.Issue),
-                       Comment: c.APIFormat(),
+                       Comment: convert.ToComment(c),
                        Changes: &api.ChangesPayload{
                                Body: &api.ChangesFromPayload{
                                        From: oldContent,
                                },
                        },
                        Repository: c.Issue.Repo.APIFormat(mode),
-                       Sender:     doer.APIFormat(),
+                       Sender:     convert.ToUser(doer, false, false),
                        IsPull:     true,
                })
        } else {
                err = webhook_module.PrepareWebhooks(c.Issue.Repo, models.HookEventIssueComment, &api.IssueCommentPayload{
                        Action:  api.HookIssueCommentEdited,
                        Issue:   convert.ToAPIIssue(c.Issue),
-                       Comment: c.APIFormat(),
+                       Comment: convert.ToComment(c),
                        Changes: &api.ChangesPayload{
                                Body: &api.ChangesFromPayload{
                                        From: oldContent,
                                },
                        },
                        Repository: c.Issue.Repo.APIFormat(mode),
-                       Sender:     doer.APIFormat(),
+                       Sender:     convert.ToUser(doer, false, false),
                        IsPull:     false,
                })
        }
@@ -395,18 +395,18 @@ func (m *webhookNotifier) NotifyCreateIssueComment(doer *models.User, repo *mode
                err = webhook_module.PrepareWebhooks(issue.Repo, models.HookEventPullRequestComment, &api.IssueCommentPayload{
                        Action:     api.HookIssueCommentCreated,
                        Issue:      convert.ToAPIIssue(issue),
-                       Comment:    comment.APIFormat(),
+                       Comment:    convert.ToComment(comment),
                        Repository: repo.APIFormat(mode),
-                       Sender:     doer.APIFormat(),
+                       Sender:     convert.ToUser(doer, false, false),
                        IsPull:     true,
                })
        } else {
                err = webhook_module.PrepareWebhooks(issue.Repo, models.HookEventIssueComment, &api.IssueCommentPayload{
                        Action:     api.HookIssueCommentCreated,
                        Issue:      convert.ToAPIIssue(issue),
-                       Comment:    comment.APIFormat(),
+                       Comment:    convert.ToComment(comment),
                        Repository: repo.APIFormat(mode),
-                       Sender:     doer.APIFormat(),
+                       Sender:     convert.ToUser(doer, false, false),
                        IsPull:     false,
                })
        }
@@ -439,18 +439,18 @@ func (m *webhookNotifier) NotifyDeleteComment(doer *models.User, comment *models
                err = webhook_module.PrepareWebhooks(comment.Issue.Repo, models.HookEventPullRequestComment, &api.IssueCommentPayload{
                        Action:     api.HookIssueCommentDeleted,
                        Issue:      convert.ToAPIIssue(comment.Issue),
-                       Comment:    comment.APIFormat(),
+                       Comment:    convert.ToComment(comment),
                        Repository: comment.Issue.Repo.APIFormat(mode),
-                       Sender:     doer.APIFormat(),
+                       Sender:     convert.ToUser(doer, false, false),
                        IsPull:     true,
                })
        } else {
                err = webhook_module.PrepareWebhooks(comment.Issue.Repo, models.HookEventIssueComment, &api.IssueCommentPayload{
                        Action:     api.HookIssueCommentDeleted,
                        Issue:      convert.ToAPIIssue(comment.Issue),
-                       Comment:    comment.APIFormat(),
+                       Comment:    convert.ToComment(comment),
                        Repository: comment.Issue.Repo.APIFormat(mode),
-                       Sender:     doer.APIFormat(),
+                       Sender:     convert.ToUser(doer, false, false),
                        IsPull:     false,
                })
        }
@@ -490,7 +490,7 @@ func (m *webhookNotifier) NotifyIssueChangeLabels(doer *models.User, issue *mode
                        Index:       issue.Index,
                        PullRequest: convert.ToAPIPullRequest(issue.PullRequest),
                        Repository:  issue.Repo.APIFormat(models.AccessModeNone),
-                       Sender:      doer.APIFormat(),
+                       Sender:      convert.ToUser(doer, false, false),
                })
        } else {
                err = webhook_module.PrepareWebhooks(issue.Repo, models.HookEventIssueLabel, &api.IssuePayload{
@@ -498,7 +498,7 @@ func (m *webhookNotifier) NotifyIssueChangeLabels(doer *models.User, issue *mode
                        Index:      issue.Index,
                        Issue:      convert.ToAPIIssue(issue),
                        Repository: issue.Repo.APIFormat(mode),
-                       Sender:     doer.APIFormat(),
+                       Sender:     convert.ToUser(doer, false, false),
                })
        }
        if err != nil {
@@ -532,7 +532,7 @@ func (m *webhookNotifier) NotifyIssueChangeMilestone(doer *models.User, issue *m
                        Index:       issue.Index,
                        PullRequest: convert.ToAPIPullRequest(issue.PullRequest),
                        Repository:  issue.Repo.APIFormat(mode),
-                       Sender:      doer.APIFormat(),
+                       Sender:      convert.ToUser(doer, false, false),
                })
        } else {
                err = webhook_module.PrepareWebhooks(issue.Repo, models.HookEventIssueMilestone, &api.IssuePayload{
@@ -540,7 +540,7 @@ func (m *webhookNotifier) NotifyIssueChangeMilestone(doer *models.User, issue *m
                        Index:      issue.Index,
                        Issue:      convert.ToAPIIssue(issue),
                        Repository: issue.Repo.APIFormat(mode),
-                       Sender:     doer.APIFormat(),
+                       Sender:     convert.ToUser(doer, false, false),
                })
        }
        if err != nil {
@@ -549,7 +549,7 @@ func (m *webhookNotifier) NotifyIssueChangeMilestone(doer *models.User, issue *m
 }
 
 func (m *webhookNotifier) NotifyPushCommits(pusher *models.User, repo *models.Repository, refName, oldCommitID, newCommitID string, commits *repository.PushCommits) {
-       apiPusher := pusher.APIFormat()
+       apiPusher := convert.ToUser(pusher, false, false)
        apiCommits, err := commits.ToAPIPayloadCommits(repo.RepoPath(), repo.HTMLURL())
        if err != nil {
                log.Error("commits.ToAPIPayloadCommits failed: %v", err)
@@ -598,7 +598,7 @@ func (*webhookNotifier) NotifyMergePullRequest(pr *models.PullRequest, doer *mod
                Index:       pr.Issue.Index,
                PullRequest: convert.ToAPIPullRequest(pr),
                Repository:  pr.Issue.Repo.APIFormat(mode),
-               Sender:      doer.APIFormat(),
+               Sender:      convert.ToUser(doer, false, false),
                Action:      api.HookIssueClosed,
        }
 
@@ -631,7 +631,7 @@ func (m *webhookNotifier) NotifyPullRequestChangeTargetBranch(doer *models.User,
                },
                PullRequest: convert.ToAPIPullRequest(issue.PullRequest),
                Repository:  issue.Repo.APIFormat(mode),
-               Sender:      doer.APIFormat(),
+               Sender:      convert.ToUser(doer, false, false),
        })
 
        if err != nil {
@@ -670,7 +670,7 @@ func (m *webhookNotifier) NotifyPullRequestReview(pr *models.PullRequest, review
                Index:       review.Issue.Index,
                PullRequest: convert.ToAPIPullRequest(pr),
                Repository:  review.Issue.Repo.APIFormat(mode),
-               Sender:      review.Reviewer.APIFormat(),
+               Sender:      convert.ToUser(review.Reviewer, false, false),
                Review: &api.ReviewPayload{
                        Type:    string(reviewHookType),
                        Content: review.Content,
@@ -681,7 +681,7 @@ func (m *webhookNotifier) NotifyPullRequestReview(pr *models.PullRequest, review
 }
 
 func (m *webhookNotifier) NotifyCreateRef(pusher *models.User, repo *models.Repository, refType, refFullName string) {
-       apiPusher := pusher.APIFormat()
+       apiPusher := convert.ToUser(pusher, false, false)
        apiRepo := repo.APIFormat(models.AccessModeNone)
        refName := git.RefEndName(refFullName)
 
@@ -725,14 +725,14 @@ func (m *webhookNotifier) NotifyPullRequestSynchronized(doer *models.User, pr *m
                Index:       pr.Issue.Index,
                PullRequest: convert.ToAPIPullRequest(pr),
                Repository:  pr.Issue.Repo.APIFormat(models.AccessModeNone),
-               Sender:      doer.APIFormat(),
+               Sender:      convert.ToUser(doer, false, false),
        }); err != nil {
                log.Error("PrepareWebhooks [pull_id: %v]: %v", pr.ID, err)
        }
 }
 
 func (m *webhookNotifier) NotifyDeleteRef(pusher *models.User, repo *models.Repository, refType, refFullName string) {
-       apiPusher := pusher.APIFormat()
+       apiPusher := convert.ToUser(pusher, false, false)
        apiRepo := repo.APIFormat(models.AccessModeNone)
        refName := git.RefEndName(refFullName)
 
@@ -756,9 +756,9 @@ func sendReleaseHook(doer *models.User, rel *models.Release, action api.HookRele
        mode, _ := models.AccessLevel(rel.Publisher, rel.Repo)
        if err := webhook_module.PrepareWebhooks(rel.Repo, models.HookEventRelease, &api.ReleasePayload{
                Action:     action,
-               Release:    rel.APIFormat(),
+               Release:    convert.ToRelease(rel),
                Repository: rel.Repo.APIFormat(mode),
-               Sender:     rel.Publisher.APIFormat(),
+               Sender:     convert.ToUser(rel.Publisher, false, false),
        }); err != nil {
                log.Error("PrepareWebhooks: %v", err)
        }
@@ -777,7 +777,7 @@ func (m *webhookNotifier) NotifyDeleteRelease(doer *models.User, rel *models.Rel
 }
 
 func (m *webhookNotifier) NotifySyncPushCommits(pusher *models.User, repo *models.Repository, refName, oldCommitID, newCommitID string, commits *repository.PushCommits) {
-       apiPusher := pusher.APIFormat()
+       apiPusher := convert.ToUser(pusher, false, false)
        apiCommits, err := commits.ToAPIPayloadCommits(repo.RepoPath(), repo.HTMLURL())
        if err != nil {
                log.Error("commits.ToAPIPayloadCommits failed: %v", err)
index bf86b42402f3233a442d1b34767ba6ca6d0de1cc..2da2f29063712ce675fe512df227200620a40355 100644 (file)
@@ -11,6 +11,7 @@ import (
 
        "code.gitea.io/gitea/models"
        "code.gitea.io/gitea/modules/context"
+       "code.gitea.io/gitea/modules/convert"
        api "code.gitea.io/gitea/modules/structs"
        "code.gitea.io/gitea/routers/api/v1/utils"
        comment_service "code.gitea.io/gitea/services/comments"
@@ -85,7 +86,7 @@ func ListIssueComments(ctx *context.APIContext) {
        apiComments := make([]*api.Comment, len(comments))
        for i, comment := range comments {
                comment.Issue = issue
-               apiComments[i] = comments[i].APIFormat()
+               apiComments[i] = convert.ToComment(comments[i])
        }
        ctx.JSON(http.StatusOK, &apiComments)
 }
@@ -167,7 +168,7 @@ func ListRepoIssueComments(ctx *context.APIContext) {
                return
        }
        for i := range comments {
-               apiComments[i] = comments[i].APIFormat()
+               apiComments[i] = convert.ToComment(comments[i])
        }
        ctx.JSON(http.StatusOK, &apiComments)
 }
@@ -225,7 +226,7 @@ func CreateIssueComment(ctx *context.APIContext, form api.CreateIssueCommentOpti
                return
        }
 
-       ctx.JSON(http.StatusCreated, comment.APIFormat())
+       ctx.JSON(http.StatusCreated, convert.ToComment(comment))
 }
 
 // GetIssueComment Get a comment by ID
@@ -293,7 +294,7 @@ func GetIssueComment(ctx *context.APIContext) {
                return
        }
 
-       ctx.JSON(http.StatusOK, comment.APIFormat())
+       ctx.JSON(http.StatusOK, convert.ToComment(comment))
 }
 
 // EditIssueComment modify a comment of an issue
@@ -414,7 +415,7 @@ func editIssueComment(ctx *context.APIContext, form api.EditIssueCommentOption)
                return
        }
 
-       ctx.JSON(http.StatusOK, comment.APIFormat())
+       ctx.JSON(http.StatusOK, convert.ToComment(comment))
 }
 
 // DeleteIssueComment delete a comment from an issue
index 564f67e49329cebe41fd80e0bdfc01ba93efae53..f5387fdd1adf1785e44c526287f2b5b4c0bab09b 100644 (file)
@@ -10,6 +10,7 @@ import (
 
        "code.gitea.io/gitea/models"
        "code.gitea.io/gitea/modules/context"
+       "code.gitea.io/gitea/modules/convert"
        api "code.gitea.io/gitea/modules/structs"
        "code.gitea.io/gitea/routers/api/v1/utils"
 )
@@ -75,7 +76,7 @@ func GetIssueCommentReactions(ctx *context.APIContext) {
        var result []api.Reaction
        for _, r := range reactions {
                result = append(result, api.Reaction{
-                       User:     r.User.APIFormat(),
+                       User:     convert.ToUser(r.User, ctx.IsSigned, false),
                        Reaction: r.Type,
                        Created:  r.CreatedUnix.AsTime(),
                })
@@ -193,7 +194,7 @@ func changeIssueCommentReaction(ctx *context.APIContext, form api.EditReactionOp
                                ctx.Error(http.StatusForbidden, err.Error(), err)
                        } else if models.IsErrReactionAlreadyExist(err) {
                                ctx.JSON(http.StatusOK, api.Reaction{
-                                       User:     ctx.User.APIFormat(),
+                                       User:     convert.ToUser(ctx.User, true, true),
                                        Reaction: reaction.Type,
                                        Created:  reaction.CreatedUnix.AsTime(),
                                })
@@ -204,7 +205,7 @@ func changeIssueCommentReaction(ctx *context.APIContext, form api.EditReactionOp
                }
 
                ctx.JSON(http.StatusCreated, api.Reaction{
-                       User:     ctx.User.APIFormat(),
+                       User:     convert.ToUser(ctx.User, true, true),
                        Reaction: reaction.Type,
                        Created:  reaction.CreatedUnix.AsTime(),
                })
@@ -289,7 +290,7 @@ func GetIssueReactions(ctx *context.APIContext) {
        var result []api.Reaction
        for _, r := range reactions {
                result = append(result, api.Reaction{
-                       User:     r.User.APIFormat(),
+                       User:     convert.ToUser(r.User, ctx.IsSigned, false),
                        Reaction: r.Type,
                        Created:  r.CreatedUnix.AsTime(),
                })
@@ -402,7 +403,7 @@ func changeIssueReaction(ctx *context.APIContext, form api.EditReactionOption, i
                                ctx.Error(http.StatusForbidden, err.Error(), err)
                        } else if models.IsErrReactionAlreadyExist(err) {
                                ctx.JSON(http.StatusOK, api.Reaction{
-                                       User:     ctx.User.APIFormat(),
+                                       User:     convert.ToUser(ctx.User, true, true),
                                        Reaction: reaction.Type,
                                        Created:  reaction.CreatedUnix.AsTime(),
                                })
@@ -413,7 +414,7 @@ func changeIssueReaction(ctx *context.APIContext, form api.EditReactionOption, i
                }
 
                ctx.JSON(http.StatusCreated, api.Reaction{
-                       User:     ctx.User.APIFormat(),
+                       User:     convert.ToUser(ctx.User, true, true),
                        Reaction: reaction.Type,
                        Created:  reaction.CreatedUnix.AsTime(),
                })
index f0df0976fb329c53cc2dbacab089ada608ccbe9c..2bbd72299ab59954412c8c4f76ee8511b0bae025 100644 (file)
@@ -9,6 +9,7 @@ import (
 
        "code.gitea.io/gitea/models"
        "code.gitea.io/gitea/modules/context"
+       "code.gitea.io/gitea/modules/convert"
        api "code.gitea.io/gitea/modules/structs"
        "code.gitea.io/gitea/routers/api/v1/utils"
 )
@@ -276,6 +277,10 @@ func GetIssueSubscribers(ctx *context.APIContext) {
                ctx.Error(http.StatusInternalServerError, "GetUsersByIDs", err)
                return
        }
+       apiUsers := make([]*api.User, 0, len(users))
+       for i := range users {
+               apiUsers[i] = convert.ToUser(users[i], ctx.IsSigned, false)
+       }
 
-       ctx.JSON(http.StatusOK, users.APIFormat())
+       ctx.JSON(http.StatusOK, apiUsers)
 }
index c2ed1fe024fb059c8f3f083d670cd6236562e84c..358cc011433a366847658a09c3f6439df0dec064 100644 (file)
@@ -9,6 +9,7 @@ import (
 
        "code.gitea.io/gitea/models"
        "code.gitea.io/gitea/modules/context"
+       "code.gitea.io/gitea/modules/convert"
        api "code.gitea.io/gitea/modules/structs"
        "code.gitea.io/gitea/routers/api/v1/utils"
        releaseservice "code.gitea.io/gitea/services/release"
@@ -60,7 +61,7 @@ func GetRelease(ctx *context.APIContext) {
                ctx.Error(http.StatusInternalServerError, "LoadAttributes", err)
                return
        }
-       ctx.JSON(http.StatusOK, release.APIFormat())
+       ctx.JSON(http.StatusOK, convert.ToRelease(release))
 }
 
 // ListReleases list a repository's releases
@@ -117,7 +118,7 @@ func ListReleases(ctx *context.APIContext) {
                        ctx.Error(http.StatusInternalServerError, "LoadAttributes", err)
                        return
                }
-               rels[i] = release.APIFormat()
+               rels[i] = convert.ToRelease(release)
        }
        ctx.JSON(http.StatusOK, rels)
 }
@@ -205,7 +206,7 @@ func CreateRelease(ctx *context.APIContext, form api.CreateReleaseOption) {
                        return
                }
        }
-       ctx.JSON(http.StatusCreated, rel.APIFormat())
+       ctx.JSON(http.StatusCreated, convert.ToRelease(rel))
 }
 
 // EditRelease edit a release
@@ -288,7 +289,7 @@ func EditRelease(ctx *context.APIContext, form api.EditReleaseOption) {
                ctx.Error(http.StatusInternalServerError, "LoadAttributes", err)
                return
        }
-       ctx.JSON(http.StatusOK, rel.APIFormat())
+       ctx.JSON(http.StatusOK, convert.ToRelease(rel))
 }
 
 // DeleteRelease delete a release from a repository
index f352c10829877a6c9a55d2d80e80a03de96555e6..51e1b160dad8e4e6c0b2684629510a6ad9906ebb 100644 (file)
@@ -9,6 +9,7 @@ import (
 
        "code.gitea.io/gitea/models"
        "code.gitea.io/gitea/modules/context"
+       "code.gitea.io/gitea/modules/convert"
        "code.gitea.io/gitea/modules/log"
        "code.gitea.io/gitea/modules/setting"
        api "code.gitea.io/gitea/modules/structs"
@@ -62,7 +63,7 @@ func GetReleaseAttachment(ctx *context.APIContext) {
                return
        }
        // FIXME Should prove the existence of the given repo, but results in unnecessary database requests
-       ctx.JSON(http.StatusOK, attach.APIFormat())
+       ctx.JSON(http.StatusOK, convert.ToReleaseAttachment(attach))
 }
 
 // ListReleaseAttachments lists all attachments of the release
@@ -107,7 +108,7 @@ func ListReleaseAttachments(ctx *context.APIContext) {
                ctx.Error(http.StatusInternalServerError, "LoadAttributes", err)
                return
        }
-       ctx.JSON(http.StatusOK, release.APIFormat().Attachments)
+       ctx.JSON(http.StatusOK, convert.ToRelease(release).Attachments)
 }
 
 // CreateReleaseAttachment creates an attachment and saves the given file
@@ -203,7 +204,7 @@ func CreateReleaseAttachment(ctx *context.APIContext) {
                return
        }
 
-       ctx.JSON(http.StatusCreated, attach.APIFormat())
+       ctx.JSON(http.StatusCreated, convert.ToReleaseAttachment(attach))
 }
 
 // EditReleaseAttachment updates the given attachment
@@ -267,7 +268,7 @@ func EditReleaseAttachment(ctx *context.APIContext, form api.EditAttachmentOptio
        if err := models.UpdateAttachment(attach); err != nil {
                ctx.Error(http.StatusInternalServerError, "UpdateAttachment", attach)
        }
-       ctx.JSON(http.StatusCreated, attach.APIFormat())
+       ctx.JSON(http.StatusCreated, convert.ToReleaseAttachment(attach))
 }
 
 // DeleteReleaseAttachment delete a given attachment
index bde3251ba28cab54c6b68745f537c8c101c25541..2a72e0000e658c6151f8b8fa6e98c7f100fb8978 100644 (file)
@@ -9,6 +9,7 @@ import (
 
        "code.gitea.io/gitea/models"
        "code.gitea.io/gitea/modules/context"
+       "code.gitea.io/gitea/modules/convert"
 )
 
 // GetReleaseTag get a single release of a repository by its tagname
@@ -56,5 +57,5 @@ func GetReleaseTag(ctx *context.APIContext) {
                ctx.Error(http.StatusInternalServerError, "LoadAttributes", err)
                return
        }
-       ctx.JSON(http.StatusOK, release.APIFormat())
+       ctx.JSON(http.StatusOK, convert.ToRelease(release))
 }
index 69661dca9177d8f3fa2189021fd4e39d212e49b2..e7318edaa51769f2048bc19375f0df9f31aaa087 100644 (file)
@@ -10,6 +10,7 @@ import (
 
        "code.gitea.io/gitea/models"
        "code.gitea.io/gitea/modules/context"
+       "code.gitea.io/gitea/modules/convert"
        "code.gitea.io/gitea/modules/repofiles"
        api "code.gitea.io/gitea/modules/structs"
        "code.gitea.io/gitea/routers/api/v1/utils"
@@ -64,7 +65,7 @@ func NewCommitStatus(ctx *context.APIContext, form api.CreateStatusOption) {
                return
        }
 
-       ctx.JSON(http.StatusCreated, status.APIFormat())
+       ctx.JSON(http.StatusCreated, convert.ToCommitStatus(status))
 }
 
 // GetCommitStatuses returns all statuses for any given commit hash
@@ -222,7 +223,7 @@ func getCommitStatuses(ctx *context.APIContext, sha string) {
 
        apiStatuses := make([]*api.Status, 0, len(statuses))
        for _, status := range statuses {
-               apiStatuses = append(apiStatuses, status.APIFormat())
+               apiStatuses = append(apiStatuses, convert.ToCommitStatus(status))
        }
 
        ctx.SetLinkHeader(int(maxResults), listOptions.PageSize)
@@ -305,7 +306,7 @@ func GetCombinedCommitStatusByRef(ctx *context.APIContext) {
 
        retStatus.Statuses = make([]*api.Status, 0, len(statuses))
        for _, status := range statuses {
-               retStatus.Statuses = append(retStatus.Statuses, status.APIFormat())
+               retStatus.Statuses = append(retStatus.Statuses, convert.ToCommitStatus(status))
                if status.State.NoBetterThan(retStatus.State) {
                        retStatus.State = status.State
                }
index 8aef3220903d1b96f26d1f1b07a45fac425db0bb..bc65e73f11c1f6c3ef0eceeeb22b85e711b44d02 100644 (file)
@@ -19,6 +19,7 @@ import (
        "code.gitea.io/gitea/modules/auth"
        "code.gitea.io/gitea/modules/base"
        "code.gitea.io/gitea/modules/context"
+       "code.gitea.io/gitea/modules/convert"
        "code.gitea.io/gitea/modules/git"
        issue_indexer "code.gitea.io/gitea/modules/indexer/issues"
        "code.gitea.io/gitea/modules/log"
@@ -2453,7 +2454,7 @@ func GetIssueAttachments(ctx *context.Context) {
        issue := GetActionIssue(ctx)
        var attachments = make([]*api.Attachment, len(issue.Attachments))
        for i := 0; i < len(issue.Attachments); i++ {
-               attachments[i] = issue.Attachments[i].APIFormat()
+               attachments[i] = convert.ToReleaseAttachment(issue.Attachments[i])
        }
        ctx.JSON(200, attachments)
 }
@@ -2472,7 +2473,7 @@ func GetCommentAttachments(ctx *context.Context) {
                        return
                }
                for i := 0; i < len(comment.Attachments); i++ {
-                       attachments = append(attachments, comment.Attachments[i].APIFormat())
+                       attachments = append(attachments, convert.ToReleaseAttachment(comment.Attachments[i]))
                }
        }
        ctx.JSON(200, attachments)
index bec401021cc5af425b1532d86f167bf56296fa33..13b95c8076c29fd76743e29dc235524a13d24e6d 100644 (file)
@@ -16,6 +16,7 @@ import (
        "code.gitea.io/gitea/modules/auth"
        "code.gitea.io/gitea/modules/base"
        "code.gitea.io/gitea/modules/context"
+       "code.gitea.io/gitea/modules/convert"
        "code.gitea.io/gitea/modules/git"
        "code.gitea.io/gitea/modules/setting"
        api "code.gitea.io/gitea/modules/structs"
@@ -1052,7 +1053,7 @@ func TestWebhook(ctx *context.Context) {
                }
        }
 
-       apiUser := ctx.User.APIFormat()
+       apiUser := convert.ToUser(ctx.User, true, true)
        p := &api.PushPayload{
                Ref:    git.BranchPrefix + ctx.Repo.Repository.DefaultBranch,
                Before: commit.ID.String(),