mirror of
https://codeberg.org/forgejo/forgejo.git
synced 2024-11-15 22:01:08 +00:00
[Refactor] Move APIFormat functions into convert package (#12856)
* 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>
This commit is contained in:
parent
131278ff22
commit
d453533beb
28 changed files with 234 additions and 208 deletions
|
@ -11,6 +11,7 @@ import (
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"code.gitea.io/gitea/models"
|
"code.gitea.io/gitea/models"
|
||||||
|
"code.gitea.io/gitea/modules/convert"
|
||||||
api "code.gitea.io/gitea/modules/structs"
|
api "code.gitea.io/gitea/modules/structs"
|
||||||
|
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
|
@ -125,7 +126,7 @@ func TestAPIGetComment(t *testing.T) {
|
||||||
DecodeJSON(t, resp, &apiComment)
|
DecodeJSON(t, resp, &apiComment)
|
||||||
|
|
||||||
assert.NoError(t, comment.LoadPoster())
|
assert.NoError(t, comment.LoadPoster())
|
||||||
expect := comment.APIFormat()
|
expect := convert.ToComment(comment)
|
||||||
|
|
||||||
assert.Equal(t, expect.ID, apiComment.ID)
|
assert.Equal(t, expect.ID, apiComment.ID)
|
||||||
assert.Equal(t, expect.Poster.FullName, apiComment.Poster.FullName)
|
assert.Equal(t, expect.Poster.FullName, apiComment.Poster.FullName)
|
||||||
|
|
|
@ -11,6 +11,7 @@ import (
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"code.gitea.io/gitea/models"
|
"code.gitea.io/gitea/models"
|
||||||
|
"code.gitea.io/gitea/modules/convert"
|
||||||
api "code.gitea.io/gitea/modules/structs"
|
api "code.gitea.io/gitea/modules/structs"
|
||||||
|
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
|
@ -60,7 +61,7 @@ func TestAPIIssuesReactions(t *testing.T) {
|
||||||
DecodeJSON(t, resp, &apiReactions)
|
DecodeJSON(t, resp, &apiReactions)
|
||||||
expectResponse := make(map[int]api.Reaction)
|
expectResponse := make(map[int]api.Reaction)
|
||||||
expectResponse[0] = api.Reaction{
|
expectResponse[0] = api.Reaction{
|
||||||
User: user2.APIFormat(),
|
User: convert.ToUser(user2, true, true),
|
||||||
Reaction: "eyes",
|
Reaction: "eyes",
|
||||||
Created: time.Unix(1573248003, 0),
|
Created: time.Unix(1573248003, 0),
|
||||||
}
|
}
|
||||||
|
@ -120,12 +121,12 @@ func TestAPICommentReactions(t *testing.T) {
|
||||||
DecodeJSON(t, resp, &apiReactions)
|
DecodeJSON(t, resp, &apiReactions)
|
||||||
expectResponse := make(map[int]api.Reaction)
|
expectResponse := make(map[int]api.Reaction)
|
||||||
expectResponse[0] = api.Reaction{
|
expectResponse[0] = api.Reaction{
|
||||||
User: user2.APIFormat(),
|
User: convert.ToUser(user2, true, true),
|
||||||
Reaction: "laugh",
|
Reaction: "laugh",
|
||||||
Created: time.Unix(1573248004, 0),
|
Created: time.Unix(1573248004, 0),
|
||||||
}
|
}
|
||||||
expectResponse[1] = api.Reaction{
|
expectResponse[1] = api.Reaction{
|
||||||
User: user1.APIFormat(),
|
User: convert.ToUser(user1, true, true),
|
||||||
Reaction: "laugh",
|
Reaction: "laugh",
|
||||||
Created: time.Unix(1573248005, 0),
|
Created: time.Unix(1573248005, 0),
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,7 +12,6 @@ import (
|
||||||
|
|
||||||
"code.gitea.io/gitea/modules/setting"
|
"code.gitea.io/gitea/modules/setting"
|
||||||
"code.gitea.io/gitea/modules/storage"
|
"code.gitea.io/gitea/modules/storage"
|
||||||
api "code.gitea.io/gitea/modules/structs"
|
|
||||||
"code.gitea.io/gitea/modules/timeutil"
|
"code.gitea.io/gitea/modules/timeutil"
|
||||||
|
|
||||||
gouuid "github.com/google/uuid"
|
gouuid "github.com/google/uuid"
|
||||||
|
@ -43,19 +42,6 @@ func (a *Attachment) IncreaseDownloadCount() error {
|
||||||
return nil
|
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
|
// AttachmentRelativePath returns the relative path
|
||||||
func AttachmentRelativePath(uuid string) string {
|
func AttachmentRelativePath(uuid string) string {
|
||||||
return path.Join(uuid[0:1], uuid[1:2], uuid)
|
return path.Join(uuid[0:1], uuid[1:2], uuid)
|
||||||
|
|
|
@ -61,27 +61,6 @@ func (status *CommitStatus) APIURL() string {
|
||||||
setting.AppURL, status.Repo.FullName(), status.SHA)
|
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
|
// CalcCommitStatus returns commit status state via some status, the commit statues should order by id desc
|
||||||
func CalcCommitStatus(statuses []*CommitStatus) *CommitStatus {
|
func CalcCommitStatus(statuses []*CommitStatus) *CommitStatus {
|
||||||
var lastStatus *CommitStatus
|
var lastStatus *CommitStatus
|
||||||
|
|
|
@ -20,7 +20,6 @@ import (
|
||||||
"code.gitea.io/gitea/modules/markup/markdown"
|
"code.gitea.io/gitea/modules/markup/markdown"
|
||||||
"code.gitea.io/gitea/modules/references"
|
"code.gitea.io/gitea/modules/references"
|
||||||
"code.gitea.io/gitea/modules/structs"
|
"code.gitea.io/gitea/modules/structs"
|
||||||
api "code.gitea.io/gitea/modules/structs"
|
|
||||||
"code.gitea.io/gitea/modules/timeutil"
|
"code.gitea.io/gitea/modules/timeutil"
|
||||||
|
|
||||||
"github.com/unknwon/com"
|
"github.com/unknwon/com"
|
||||||
|
@ -354,20 +353,6 @@ func (c *Comment) PRURL() string {
|
||||||
return c.Issue.HTMLURL()
|
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.
|
// CommentHashTag returns unique hash tag for comment id.
|
||||||
func CommentHashTag(id int64) string {
|
func CommentHashTag(id int64) string {
|
||||||
return fmt.Sprintf("issuecomment-%d", id)
|
return fmt.Sprintf("issuecomment-%d", id)
|
||||||
|
|
|
@ -12,7 +12,6 @@ import (
|
||||||
|
|
||||||
"code.gitea.io/gitea/modules/setting"
|
"code.gitea.io/gitea/modules/setting"
|
||||||
"code.gitea.io/gitea/modules/structs"
|
"code.gitea.io/gitea/modules/structs"
|
||||||
api "code.gitea.io/gitea/modules/structs"
|
|
||||||
"code.gitea.io/gitea/modules/timeutil"
|
"code.gitea.io/gitea/modules/timeutil"
|
||||||
|
|
||||||
"xorm.io/builder"
|
"xorm.io/builder"
|
||||||
|
@ -86,31 +85,6 @@ func (r *Release) HTMLURL() string {
|
||||||
return fmt.Sprintf("%s/releases/tag/%s", r.Repo.HTMLURL(), r.TagName)
|
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.
|
// IsReleaseExist returns true if release with given tag name already exists.
|
||||||
func IsReleaseExist(repoID int64, tagName string) (bool, error) {
|
func IsReleaseExist(repoID int64, tagName string) (bool, error) {
|
||||||
if len(tagName) == 0 {
|
if len(tagName) == 0 {
|
||||||
|
|
|
@ -410,8 +410,17 @@ func (repo *Repository) innerAPIFormat(e Engine, mode AccessMode, isParent bool)
|
||||||
numReleases, _ := GetReleaseCountByRepoID(repo.ID, FindReleasesOptions{IncludeDrafts: false, IncludeTags: true})
|
numReleases, _ := GetReleaseCountByRepoID(repo.ID, FindReleasesOptions{IncludeDrafts: false, IncludeTags: true})
|
||||||
|
|
||||||
return &api.Repository{
|
return &api.Repository{
|
||||||
ID: repo.ID,
|
ID: repo.ID,
|
||||||
Owner: repo.Owner.APIFormat(),
|
// 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,
|
Name: repo.Name,
|
||||||
FullName: repo.FullName(),
|
FullName: repo.FullName(),
|
||||||
Description: repo.Description,
|
Description: repo.Description,
|
||||||
|
|
|
@ -29,7 +29,6 @@ import (
|
||||||
"code.gitea.io/gitea/modules/setting"
|
"code.gitea.io/gitea/modules/setting"
|
||||||
"code.gitea.io/gitea/modules/storage"
|
"code.gitea.io/gitea/modules/storage"
|
||||||
"code.gitea.io/gitea/modules/structs"
|
"code.gitea.io/gitea/modules/structs"
|
||||||
api "code.gitea.io/gitea/modules/structs"
|
|
||||||
"code.gitea.io/gitea/modules/timeutil"
|
"code.gitea.io/gitea/modules/timeutil"
|
||||||
"code.gitea.io/gitea/modules/util"
|
"code.gitea.io/gitea/modules/util"
|
||||||
|
|
||||||
|
@ -241,24 +240,6 @@ func GetAllUsers() ([]*User, error) {
|
||||||
return users, x.OrderBy("id").Find(&users)
|
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.
|
// IsLocal returns true if user login type is LoginPlain.
|
||||||
func (u *User) IsLocal() bool {
|
func (u *User) IsLocal() bool {
|
||||||
return u.LoginType <= LoginPlain
|
return u.LoginType <= LoginPlain
|
||||||
|
|
|
@ -78,23 +78,6 @@ func TestGetUserEmailsByNames(t *testing.T) {
|
||||||
assert.Equal(t, []string{"user8@example.com"}, GetUserEmailsByNames([]string{"user8", "user7"}))
|
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) {
|
func TestCanCreateOrganization(t *testing.T) {
|
||||||
assert.NoError(t, PrepareTestDatabase())
|
assert.NoError(t, PrepareTestDatabase())
|
||||||
|
|
||||||
|
|
|
@ -8,7 +8,6 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
|
||||||
"code.gitea.io/gitea/modules/log"
|
"code.gitea.io/gitea/modules/log"
|
||||||
api "code.gitea.io/gitea/modules/structs"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
//UserList is a list of user.
|
//UserList is a list of user.
|
||||||
|
@ -94,12 +93,3 @@ func (users UserList) loadTwoFactorStatus(e Engine) (map[int64]*TwoFactor, error
|
||||||
}
|
}
|
||||||
return tokenMaps, nil
|
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
|
|
||||||
}
|
|
||||||
|
|
|
@ -339,3 +339,24 @@ func ToOAuth2Application(app *models.OAuth2Application) *api.OAuth2Application {
|
||||||
Created: app.CreatedUnix.AsTime(),
|
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
|
||||||
|
}
|
||||||
|
|
|
@ -86,13 +86,13 @@ func ToCommit(repo *models.Repository, commit *git.Commit, userCache map[string]
|
||||||
}
|
}
|
||||||
|
|
||||||
if ok {
|
if ok {
|
||||||
apiAuthor = cacheAuthor.APIFormat()
|
apiAuthor = ToUser(cacheAuthor, false, false)
|
||||||
} else {
|
} else {
|
||||||
author, err := models.GetUserByEmail(commit.Author.Email)
|
author, err := models.GetUserByEmail(commit.Author.Email)
|
||||||
if err != nil && !models.IsErrUserNotExist(err) {
|
if err != nil && !models.IsErrUserNotExist(err) {
|
||||||
return nil, err
|
return nil, err
|
||||||
} else if err == nil {
|
} else if err == nil {
|
||||||
apiAuthor = author.APIFormat()
|
apiAuthor = ToUser(author, false, false)
|
||||||
if userCache != nil {
|
if userCache != nil {
|
||||||
userCache[commit.Author.Email] = author
|
userCache[commit.Author.Email] = author
|
||||||
}
|
}
|
||||||
|
@ -108,13 +108,13 @@ func ToCommit(repo *models.Repository, commit *git.Commit, userCache map[string]
|
||||||
}
|
}
|
||||||
|
|
||||||
if ok {
|
if ok {
|
||||||
apiCommitter = cacheCommitter.APIFormat()
|
apiCommitter = ToUser(cacheCommitter, false, false)
|
||||||
} else {
|
} else {
|
||||||
committer, err := models.GetUserByEmail(commit.Committer.Email)
|
committer, err := models.GetUserByEmail(commit.Committer.Email)
|
||||||
if err != nil && !models.IsErrUserNotExist(err) {
|
if err != nil && !models.IsErrUserNotExist(err) {
|
||||||
return nil, err
|
return nil, err
|
||||||
} else if err == nil {
|
} else if err == nil {
|
||||||
apiCommitter = committer.APIFormat()
|
apiCommitter = ToUser(committer, false, false)
|
||||||
if userCache != nil {
|
if userCache != nil {
|
||||||
userCache[commit.Committer.Email] = committer
|
userCache[commit.Committer.Email] = committer
|
||||||
}
|
}
|
||||||
|
|
|
@ -31,7 +31,7 @@ func ToAPIIssue(issue *models.Issue) *api.Issue {
|
||||||
URL: issue.APIURL(),
|
URL: issue.APIURL(),
|
||||||
HTMLURL: issue.HTMLURL(),
|
HTMLURL: issue.HTMLURL(),
|
||||||
Index: issue.Index,
|
Index: issue.Index,
|
||||||
Poster: issue.Poster.APIFormat(),
|
Poster: ToUser(issue.Poster, false, false),
|
||||||
Title: issue.Title,
|
Title: issue.Title,
|
||||||
Body: issue.Content,
|
Body: issue.Content,
|
||||||
Labels: ToLabelList(issue.Labels),
|
Labels: ToLabelList(issue.Labels),
|
||||||
|
@ -65,9 +65,9 @@ func ToAPIIssue(issue *models.Issue) *api.Issue {
|
||||||
}
|
}
|
||||||
if len(issue.Assignees) > 0 {
|
if len(issue.Assignees) > 0 {
|
||||||
for _, assignee := range issue.Assignees {
|
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 issue.IsPull {
|
||||||
if err := issue.LoadPullRequest(); err != nil {
|
if err := issue.LoadPullRequest(); err != nil {
|
||||||
|
|
24
modules/convert/issue_comment.go
Normal file
24
modules/convert/issue_comment.go
Normal file
|
@ -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(),
|
||||||
|
}
|
||||||
|
}
|
|
@ -141,7 +141,7 @@ func ToAPIPullRequest(pr *models.PullRequest) *api.PullRequest {
|
||||||
if pr.HasMerged {
|
if pr.HasMerged {
|
||||||
apiPullRequest.Merged = pr.MergedUnix.AsTimePtr()
|
apiPullRequest.Merged = pr.MergedUnix.AsTimePtr()
|
||||||
apiPullRequest.MergedCommitID = &pr.MergedCommitID
|
apiPullRequest.MergedCommitID = &pr.MergedCommitID
|
||||||
apiPullRequest.MergedBy = pr.Merger.APIFormat()
|
apiPullRequest.MergedBy = ToUser(pr.Merger, false, false)
|
||||||
}
|
}
|
||||||
|
|
||||||
return apiPullRequest
|
return apiPullRequest
|
||||||
|
|
48
modules/convert/release.go
Normal file
48
modules/convert/release.go
Normal file
|
@ -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(),
|
||||||
|
}
|
||||||
|
}
|
|
@ -13,6 +13,9 @@ import (
|
||||||
// ToUser convert models.User to api.User
|
// 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
|
// 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 {
|
func ToUser(user *models.User, signed, authed bool) *api.User {
|
||||||
|
if user == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
result := &api.User{
|
result := &api.User{
|
||||||
ID: user.ID,
|
ID: user.ID,
|
||||||
UserName: user.Name,
|
UserName: user.Name,
|
||||||
|
|
28
modules/convert/user_test.go
Normal file
28
modules/convert/user_test.go
Normal file
|
@ -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)
|
||||||
|
}
|
|
@ -53,7 +53,7 @@ func (m *webhookNotifier) NotifyIssueClearLabels(doer *models.User, issue *model
|
||||||
Index: issue.Index,
|
Index: issue.Index,
|
||||||
PullRequest: convert.ToAPIPullRequest(issue.PullRequest),
|
PullRequest: convert.ToAPIPullRequest(issue.PullRequest),
|
||||||
Repository: issue.Repo.APIFormat(mode),
|
Repository: issue.Repo.APIFormat(mode),
|
||||||
Sender: doer.APIFormat(),
|
Sender: convert.ToUser(doer, false, false),
|
||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
err = webhook_module.PrepareWebhooks(issue.Repo, models.HookEventIssueLabel, &api.IssuePayload{
|
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,
|
Index: issue.Index,
|
||||||
Issue: convert.ToAPIIssue(issue),
|
Issue: convert.ToAPIIssue(issue),
|
||||||
Repository: issue.Repo.APIFormat(mode),
|
Repository: issue.Repo.APIFormat(mode),
|
||||||
Sender: doer.APIFormat(),
|
Sender: convert.ToUser(doer, false, false),
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
if err != nil {
|
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{
|
if err := webhook_module.PrepareWebhooks(oldRepo, models.HookEventFork, &api.ForkPayload{
|
||||||
Forkee: oldRepo.APIFormat(oldMode),
|
Forkee: oldRepo.APIFormat(oldMode),
|
||||||
Repo: repo.APIFormat(mode),
|
Repo: repo.APIFormat(mode),
|
||||||
Sender: doer.APIFormat(),
|
Sender: convert.ToUser(doer, false, false),
|
||||||
}); err != nil {
|
}); err != nil {
|
||||||
log.Error("PrepareWebhooks [repo_id: %d]: %v", oldRepo.ID, err)
|
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{
|
if err := webhook_module.PrepareWebhooks(repo, models.HookEventRepository, &api.RepositoryPayload{
|
||||||
Action: api.HookRepoCreated,
|
Action: api.HookRepoCreated,
|
||||||
Repository: repo.APIFormat(models.AccessModeOwner),
|
Repository: repo.APIFormat(models.AccessModeOwner),
|
||||||
Organization: u.APIFormat(),
|
Organization: convert.ToUser(u, false, false),
|
||||||
Sender: doer.APIFormat(),
|
Sender: convert.ToUser(doer, false, false),
|
||||||
}); err != nil {
|
}); err != nil {
|
||||||
log.Error("PrepareWebhooks [repo_id: %d]: %v", repo.ID, err)
|
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{
|
if err := webhook_module.PrepareWebhooks(repo, models.HookEventRepository, &api.RepositoryPayload{
|
||||||
Action: api.HookRepoCreated,
|
Action: api.HookRepoCreated,
|
||||||
Repository: repo.APIFormat(models.AccessModeOwner),
|
Repository: repo.APIFormat(models.AccessModeOwner),
|
||||||
Organization: u.APIFormat(),
|
Organization: convert.ToUser(u, false, false),
|
||||||
Sender: doer.APIFormat(),
|
Sender: convert.ToUser(doer, false, false),
|
||||||
}); err != nil {
|
}); err != nil {
|
||||||
log.Error("PrepareWebhooks [repo_id: %d]: %v", repo.ID, err)
|
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{
|
if err := webhook_module.PrepareWebhooks(repo, models.HookEventRepository, &api.RepositoryPayload{
|
||||||
Action: api.HookRepoDeleted,
|
Action: api.HookRepoDeleted,
|
||||||
Repository: repo.APIFormat(models.AccessModeOwner),
|
Repository: repo.APIFormat(models.AccessModeOwner),
|
||||||
Organization: u.APIFormat(),
|
Organization: convert.ToUser(u, false, false),
|
||||||
Sender: doer.APIFormat(),
|
Sender: convert.ToUser(doer, false, false),
|
||||||
}); err != nil {
|
}); err != nil {
|
||||||
log.Error("PrepareWebhooks [repo_id: %d]: %v", repo.ID, err)
|
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,
|
Index: issue.Index,
|
||||||
PullRequest: convert.ToAPIPullRequest(issue.PullRequest),
|
PullRequest: convert.ToAPIPullRequest(issue.PullRequest),
|
||||||
Repository: issue.Repo.APIFormat(mode),
|
Repository: issue.Repo.APIFormat(mode),
|
||||||
Sender: doer.APIFormat(),
|
Sender: convert.ToUser(doer, false, false),
|
||||||
}
|
}
|
||||||
if removed {
|
if removed {
|
||||||
apiPullRequest.Action = api.HookIssueUnassigned
|
apiPullRequest.Action = api.HookIssueUnassigned
|
||||||
|
@ -153,7 +153,7 @@ func (m *webhookNotifier) NotifyIssueChangeAssignee(doer *models.User, issue *mo
|
||||||
Index: issue.Index,
|
Index: issue.Index,
|
||||||
Issue: convert.ToAPIIssue(issue),
|
Issue: convert.ToAPIIssue(issue),
|
||||||
Repository: issue.Repo.APIFormat(mode),
|
Repository: issue.Repo.APIFormat(mode),
|
||||||
Sender: doer.APIFormat(),
|
Sender: convert.ToUser(doer, false, false),
|
||||||
}
|
}
|
||||||
if removed {
|
if removed {
|
||||||
apiIssue.Action = api.HookIssueUnassigned
|
apiIssue.Action = api.HookIssueUnassigned
|
||||||
|
@ -187,7 +187,7 @@ func (m *webhookNotifier) NotifyIssueChangeTitle(doer *models.User, issue *model
|
||||||
},
|
},
|
||||||
PullRequest: convert.ToAPIPullRequest(issue.PullRequest),
|
PullRequest: convert.ToAPIPullRequest(issue.PullRequest),
|
||||||
Repository: issue.Repo.APIFormat(mode),
|
Repository: issue.Repo.APIFormat(mode),
|
||||||
Sender: doer.APIFormat(),
|
Sender: convert.ToUser(doer, false, false),
|
||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
err = webhook_module.PrepareWebhooks(issue.Repo, models.HookEventIssues, &api.IssuePayload{
|
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),
|
Issue: convert.ToAPIIssue(issue),
|
||||||
Repository: issue.Repo.APIFormat(mode),
|
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,
|
Index: issue.Index,
|
||||||
PullRequest: convert.ToAPIPullRequest(issue.PullRequest),
|
PullRequest: convert.ToAPIPullRequest(issue.PullRequest),
|
||||||
Repository: issue.Repo.APIFormat(mode),
|
Repository: issue.Repo.APIFormat(mode),
|
||||||
Sender: doer.APIFormat(),
|
Sender: convert.ToUser(doer, false, false),
|
||||||
}
|
}
|
||||||
if isClosed {
|
if isClosed {
|
||||||
apiPullRequest.Action = api.HookIssueClosed
|
apiPullRequest.Action = api.HookIssueClosed
|
||||||
|
@ -235,7 +235,7 @@ func (m *webhookNotifier) NotifyIssueChangeStatus(doer *models.User, issue *mode
|
||||||
Index: issue.Index,
|
Index: issue.Index,
|
||||||
Issue: convert.ToAPIIssue(issue),
|
Issue: convert.ToAPIIssue(issue),
|
||||||
Repository: issue.Repo.APIFormat(mode),
|
Repository: issue.Repo.APIFormat(mode),
|
||||||
Sender: doer.APIFormat(),
|
Sender: convert.ToUser(doer, false, false),
|
||||||
}
|
}
|
||||||
if isClosed {
|
if isClosed {
|
||||||
apiIssue.Action = api.HookIssueClosed
|
apiIssue.Action = api.HookIssueClosed
|
||||||
|
@ -265,7 +265,7 @@ func (m *webhookNotifier) NotifyNewIssue(issue *models.Issue) {
|
||||||
Index: issue.Index,
|
Index: issue.Index,
|
||||||
Issue: convert.ToAPIIssue(issue),
|
Issue: convert.ToAPIIssue(issue),
|
||||||
Repository: issue.Repo.APIFormat(mode),
|
Repository: issue.Repo.APIFormat(mode),
|
||||||
Sender: issue.Poster.APIFormat(),
|
Sender: convert.ToUser(issue.Poster, false, false),
|
||||||
}); err != nil {
|
}); err != nil {
|
||||||
log.Error("PrepareWebhooks: %v", err)
|
log.Error("PrepareWebhooks: %v", err)
|
||||||
}
|
}
|
||||||
|
@ -291,7 +291,7 @@ func (m *webhookNotifier) NotifyNewPullRequest(pull *models.PullRequest) {
|
||||||
Index: pull.Issue.Index,
|
Index: pull.Issue.Index,
|
||||||
PullRequest: convert.ToAPIPullRequest(pull),
|
PullRequest: convert.ToAPIPullRequest(pull),
|
||||||
Repository: pull.Issue.Repo.APIFormat(mode),
|
Repository: pull.Issue.Repo.APIFormat(mode),
|
||||||
Sender: pull.Issue.Poster.APIFormat(),
|
Sender: convert.ToUser(pull.Issue.Poster, false, false),
|
||||||
}); err != nil {
|
}); err != nil {
|
||||||
log.Error("PrepareWebhooks: %v", err)
|
log.Error("PrepareWebhooks: %v", err)
|
||||||
}
|
}
|
||||||
|
@ -312,7 +312,7 @@ func (m *webhookNotifier) NotifyIssueChangeContent(doer *models.User, issue *mod
|
||||||
},
|
},
|
||||||
PullRequest: convert.ToAPIPullRequest(issue.PullRequest),
|
PullRequest: convert.ToAPIPullRequest(issue.PullRequest),
|
||||||
Repository: issue.Repo.APIFormat(mode),
|
Repository: issue.Repo.APIFormat(mode),
|
||||||
Sender: doer.APIFormat(),
|
Sender: convert.ToUser(doer, false, false),
|
||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
err = webhook_module.PrepareWebhooks(issue.Repo, models.HookEventIssues, &api.IssuePayload{
|
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),
|
Issue: convert.ToAPIIssue(issue),
|
||||||
Repository: issue.Repo.APIFormat(mode),
|
Repository: issue.Repo.APIFormat(mode),
|
||||||
Sender: doer.APIFormat(),
|
Sender: convert.ToUser(doer, false, false),
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
if err != nil {
|
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{
|
err = webhook_module.PrepareWebhooks(c.Issue.Repo, models.HookEventPullRequestComment, &api.IssueCommentPayload{
|
||||||
Action: api.HookIssueCommentEdited,
|
Action: api.HookIssueCommentEdited,
|
||||||
Issue: convert.ToAPIIssue(c.Issue),
|
Issue: convert.ToAPIIssue(c.Issue),
|
||||||
Comment: c.APIFormat(),
|
Comment: convert.ToComment(c),
|
||||||
Changes: &api.ChangesPayload{
|
Changes: &api.ChangesPayload{
|
||||||
Body: &api.ChangesFromPayload{
|
Body: &api.ChangesFromPayload{
|
||||||
From: oldContent,
|
From: oldContent,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
Repository: c.Issue.Repo.APIFormat(mode),
|
Repository: c.Issue.Repo.APIFormat(mode),
|
||||||
Sender: doer.APIFormat(),
|
Sender: convert.ToUser(doer, false, false),
|
||||||
IsPull: true,
|
IsPull: true,
|
||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
err = webhook_module.PrepareWebhooks(c.Issue.Repo, models.HookEventIssueComment, &api.IssueCommentPayload{
|
err = webhook_module.PrepareWebhooks(c.Issue.Repo, models.HookEventIssueComment, &api.IssueCommentPayload{
|
||||||
Action: api.HookIssueCommentEdited,
|
Action: api.HookIssueCommentEdited,
|
||||||
Issue: convert.ToAPIIssue(c.Issue),
|
Issue: convert.ToAPIIssue(c.Issue),
|
||||||
Comment: c.APIFormat(),
|
Comment: convert.ToComment(c),
|
||||||
Changes: &api.ChangesPayload{
|
Changes: &api.ChangesPayload{
|
||||||
Body: &api.ChangesFromPayload{
|
Body: &api.ChangesFromPayload{
|
||||||
From: oldContent,
|
From: oldContent,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
Repository: c.Issue.Repo.APIFormat(mode),
|
Repository: c.Issue.Repo.APIFormat(mode),
|
||||||
Sender: doer.APIFormat(),
|
Sender: convert.ToUser(doer, false, false),
|
||||||
IsPull: 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{
|
err = webhook_module.PrepareWebhooks(issue.Repo, models.HookEventPullRequestComment, &api.IssueCommentPayload{
|
||||||
Action: api.HookIssueCommentCreated,
|
Action: api.HookIssueCommentCreated,
|
||||||
Issue: convert.ToAPIIssue(issue),
|
Issue: convert.ToAPIIssue(issue),
|
||||||
Comment: comment.APIFormat(),
|
Comment: convert.ToComment(comment),
|
||||||
Repository: repo.APIFormat(mode),
|
Repository: repo.APIFormat(mode),
|
||||||
Sender: doer.APIFormat(),
|
Sender: convert.ToUser(doer, false, false),
|
||||||
IsPull: true,
|
IsPull: true,
|
||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
err = webhook_module.PrepareWebhooks(issue.Repo, models.HookEventIssueComment, &api.IssueCommentPayload{
|
err = webhook_module.PrepareWebhooks(issue.Repo, models.HookEventIssueComment, &api.IssueCommentPayload{
|
||||||
Action: api.HookIssueCommentCreated,
|
Action: api.HookIssueCommentCreated,
|
||||||
Issue: convert.ToAPIIssue(issue),
|
Issue: convert.ToAPIIssue(issue),
|
||||||
Comment: comment.APIFormat(),
|
Comment: convert.ToComment(comment),
|
||||||
Repository: repo.APIFormat(mode),
|
Repository: repo.APIFormat(mode),
|
||||||
Sender: doer.APIFormat(),
|
Sender: convert.ToUser(doer, false, false),
|
||||||
IsPull: 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{
|
err = webhook_module.PrepareWebhooks(comment.Issue.Repo, models.HookEventPullRequestComment, &api.IssueCommentPayload{
|
||||||
Action: api.HookIssueCommentDeleted,
|
Action: api.HookIssueCommentDeleted,
|
||||||
Issue: convert.ToAPIIssue(comment.Issue),
|
Issue: convert.ToAPIIssue(comment.Issue),
|
||||||
Comment: comment.APIFormat(),
|
Comment: convert.ToComment(comment),
|
||||||
Repository: comment.Issue.Repo.APIFormat(mode),
|
Repository: comment.Issue.Repo.APIFormat(mode),
|
||||||
Sender: doer.APIFormat(),
|
Sender: convert.ToUser(doer, false, false),
|
||||||
IsPull: true,
|
IsPull: true,
|
||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
err = webhook_module.PrepareWebhooks(comment.Issue.Repo, models.HookEventIssueComment, &api.IssueCommentPayload{
|
err = webhook_module.PrepareWebhooks(comment.Issue.Repo, models.HookEventIssueComment, &api.IssueCommentPayload{
|
||||||
Action: api.HookIssueCommentDeleted,
|
Action: api.HookIssueCommentDeleted,
|
||||||
Issue: convert.ToAPIIssue(comment.Issue),
|
Issue: convert.ToAPIIssue(comment.Issue),
|
||||||
Comment: comment.APIFormat(),
|
Comment: convert.ToComment(comment),
|
||||||
Repository: comment.Issue.Repo.APIFormat(mode),
|
Repository: comment.Issue.Repo.APIFormat(mode),
|
||||||
Sender: doer.APIFormat(),
|
Sender: convert.ToUser(doer, false, false),
|
||||||
IsPull: false,
|
IsPull: false,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
@ -490,7 +490,7 @@ func (m *webhookNotifier) NotifyIssueChangeLabels(doer *models.User, issue *mode
|
||||||
Index: issue.Index,
|
Index: issue.Index,
|
||||||
PullRequest: convert.ToAPIPullRequest(issue.PullRequest),
|
PullRequest: convert.ToAPIPullRequest(issue.PullRequest),
|
||||||
Repository: issue.Repo.APIFormat(models.AccessModeNone),
|
Repository: issue.Repo.APIFormat(models.AccessModeNone),
|
||||||
Sender: doer.APIFormat(),
|
Sender: convert.ToUser(doer, false, false),
|
||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
err = webhook_module.PrepareWebhooks(issue.Repo, models.HookEventIssueLabel, &api.IssuePayload{
|
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,
|
Index: issue.Index,
|
||||||
Issue: convert.ToAPIIssue(issue),
|
Issue: convert.ToAPIIssue(issue),
|
||||||
Repository: issue.Repo.APIFormat(mode),
|
Repository: issue.Repo.APIFormat(mode),
|
||||||
Sender: doer.APIFormat(),
|
Sender: convert.ToUser(doer, false, false),
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -532,7 +532,7 @@ func (m *webhookNotifier) NotifyIssueChangeMilestone(doer *models.User, issue *m
|
||||||
Index: issue.Index,
|
Index: issue.Index,
|
||||||
PullRequest: convert.ToAPIPullRequest(issue.PullRequest),
|
PullRequest: convert.ToAPIPullRequest(issue.PullRequest),
|
||||||
Repository: issue.Repo.APIFormat(mode),
|
Repository: issue.Repo.APIFormat(mode),
|
||||||
Sender: doer.APIFormat(),
|
Sender: convert.ToUser(doer, false, false),
|
||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
err = webhook_module.PrepareWebhooks(issue.Repo, models.HookEventIssueMilestone, &api.IssuePayload{
|
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,
|
Index: issue.Index,
|
||||||
Issue: convert.ToAPIIssue(issue),
|
Issue: convert.ToAPIIssue(issue),
|
||||||
Repository: issue.Repo.APIFormat(mode),
|
Repository: issue.Repo.APIFormat(mode),
|
||||||
Sender: doer.APIFormat(),
|
Sender: convert.ToUser(doer, false, false),
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
if err != nil {
|
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) {
|
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())
|
apiCommits, err := commits.ToAPIPayloadCommits(repo.RepoPath(), repo.HTMLURL())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Error("commits.ToAPIPayloadCommits failed: %v", err)
|
log.Error("commits.ToAPIPayloadCommits failed: %v", err)
|
||||||
|
@ -598,7 +598,7 @@ func (*webhookNotifier) NotifyMergePullRequest(pr *models.PullRequest, doer *mod
|
||||||
Index: pr.Issue.Index,
|
Index: pr.Issue.Index,
|
||||||
PullRequest: convert.ToAPIPullRequest(pr),
|
PullRequest: convert.ToAPIPullRequest(pr),
|
||||||
Repository: pr.Issue.Repo.APIFormat(mode),
|
Repository: pr.Issue.Repo.APIFormat(mode),
|
||||||
Sender: doer.APIFormat(),
|
Sender: convert.ToUser(doer, false, false),
|
||||||
Action: api.HookIssueClosed,
|
Action: api.HookIssueClosed,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -631,7 +631,7 @@ func (m *webhookNotifier) NotifyPullRequestChangeTargetBranch(doer *models.User,
|
||||||
},
|
},
|
||||||
PullRequest: convert.ToAPIPullRequest(issue.PullRequest),
|
PullRequest: convert.ToAPIPullRequest(issue.PullRequest),
|
||||||
Repository: issue.Repo.APIFormat(mode),
|
Repository: issue.Repo.APIFormat(mode),
|
||||||
Sender: doer.APIFormat(),
|
Sender: convert.ToUser(doer, false, false),
|
||||||
})
|
})
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -670,7 +670,7 @@ func (m *webhookNotifier) NotifyPullRequestReview(pr *models.PullRequest, review
|
||||||
Index: review.Issue.Index,
|
Index: review.Issue.Index,
|
||||||
PullRequest: convert.ToAPIPullRequest(pr),
|
PullRequest: convert.ToAPIPullRequest(pr),
|
||||||
Repository: review.Issue.Repo.APIFormat(mode),
|
Repository: review.Issue.Repo.APIFormat(mode),
|
||||||
Sender: review.Reviewer.APIFormat(),
|
Sender: convert.ToUser(review.Reviewer, false, false),
|
||||||
Review: &api.ReviewPayload{
|
Review: &api.ReviewPayload{
|
||||||
Type: string(reviewHookType),
|
Type: string(reviewHookType),
|
||||||
Content: review.Content,
|
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) {
|
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)
|
apiRepo := repo.APIFormat(models.AccessModeNone)
|
||||||
refName := git.RefEndName(refFullName)
|
refName := git.RefEndName(refFullName)
|
||||||
|
|
||||||
|
@ -725,14 +725,14 @@ func (m *webhookNotifier) NotifyPullRequestSynchronized(doer *models.User, pr *m
|
||||||
Index: pr.Issue.Index,
|
Index: pr.Issue.Index,
|
||||||
PullRequest: convert.ToAPIPullRequest(pr),
|
PullRequest: convert.ToAPIPullRequest(pr),
|
||||||
Repository: pr.Issue.Repo.APIFormat(models.AccessModeNone),
|
Repository: pr.Issue.Repo.APIFormat(models.AccessModeNone),
|
||||||
Sender: doer.APIFormat(),
|
Sender: convert.ToUser(doer, false, false),
|
||||||
}); err != nil {
|
}); err != nil {
|
||||||
log.Error("PrepareWebhooks [pull_id: %v]: %v", pr.ID, err)
|
log.Error("PrepareWebhooks [pull_id: %v]: %v", pr.ID, err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *webhookNotifier) NotifyDeleteRef(pusher *models.User, repo *models.Repository, refType, refFullName string) {
|
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)
|
apiRepo := repo.APIFormat(models.AccessModeNone)
|
||||||
refName := git.RefEndName(refFullName)
|
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)
|
mode, _ := models.AccessLevel(rel.Publisher, rel.Repo)
|
||||||
if err := webhook_module.PrepareWebhooks(rel.Repo, models.HookEventRelease, &api.ReleasePayload{
|
if err := webhook_module.PrepareWebhooks(rel.Repo, models.HookEventRelease, &api.ReleasePayload{
|
||||||
Action: action,
|
Action: action,
|
||||||
Release: rel.APIFormat(),
|
Release: convert.ToRelease(rel),
|
||||||
Repository: rel.Repo.APIFormat(mode),
|
Repository: rel.Repo.APIFormat(mode),
|
||||||
Sender: rel.Publisher.APIFormat(),
|
Sender: convert.ToUser(rel.Publisher, false, false),
|
||||||
}); err != nil {
|
}); err != nil {
|
||||||
log.Error("PrepareWebhooks: %v", err)
|
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) {
|
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())
|
apiCommits, err := commits.ToAPIPayloadCommits(repo.RepoPath(), repo.HTMLURL())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Error("commits.ToAPIPayloadCommits failed: %v", err)
|
log.Error("commits.ToAPIPayloadCommits failed: %v", err)
|
||||||
|
|
|
@ -11,6 +11,7 @@ import (
|
||||||
|
|
||||||
"code.gitea.io/gitea/models"
|
"code.gitea.io/gitea/models"
|
||||||
"code.gitea.io/gitea/modules/context"
|
"code.gitea.io/gitea/modules/context"
|
||||||
|
"code.gitea.io/gitea/modules/convert"
|
||||||
api "code.gitea.io/gitea/modules/structs"
|
api "code.gitea.io/gitea/modules/structs"
|
||||||
"code.gitea.io/gitea/routers/api/v1/utils"
|
"code.gitea.io/gitea/routers/api/v1/utils"
|
||||||
comment_service "code.gitea.io/gitea/services/comments"
|
comment_service "code.gitea.io/gitea/services/comments"
|
||||||
|
@ -85,7 +86,7 @@ func ListIssueComments(ctx *context.APIContext) {
|
||||||
apiComments := make([]*api.Comment, len(comments))
|
apiComments := make([]*api.Comment, len(comments))
|
||||||
for i, comment := range comments {
|
for i, comment := range comments {
|
||||||
comment.Issue = issue
|
comment.Issue = issue
|
||||||
apiComments[i] = comments[i].APIFormat()
|
apiComments[i] = convert.ToComment(comments[i])
|
||||||
}
|
}
|
||||||
ctx.JSON(http.StatusOK, &apiComments)
|
ctx.JSON(http.StatusOK, &apiComments)
|
||||||
}
|
}
|
||||||
|
@ -167,7 +168,7 @@ func ListRepoIssueComments(ctx *context.APIContext) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
for i := range comments {
|
for i := range comments {
|
||||||
apiComments[i] = comments[i].APIFormat()
|
apiComments[i] = convert.ToComment(comments[i])
|
||||||
}
|
}
|
||||||
ctx.JSON(http.StatusOK, &apiComments)
|
ctx.JSON(http.StatusOK, &apiComments)
|
||||||
}
|
}
|
||||||
|
@ -225,7 +226,7 @@ func CreateIssueComment(ctx *context.APIContext, form api.CreateIssueCommentOpti
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
ctx.JSON(http.StatusCreated, comment.APIFormat())
|
ctx.JSON(http.StatusCreated, convert.ToComment(comment))
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetIssueComment Get a comment by ID
|
// GetIssueComment Get a comment by ID
|
||||||
|
@ -293,7 +294,7 @@ func GetIssueComment(ctx *context.APIContext) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
ctx.JSON(http.StatusOK, comment.APIFormat())
|
ctx.JSON(http.StatusOK, convert.ToComment(comment))
|
||||||
}
|
}
|
||||||
|
|
||||||
// EditIssueComment modify a comment of an issue
|
// EditIssueComment modify a comment of an issue
|
||||||
|
@ -414,7 +415,7 @@ func editIssueComment(ctx *context.APIContext, form api.EditIssueCommentOption)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
ctx.JSON(http.StatusOK, comment.APIFormat())
|
ctx.JSON(http.StatusOK, convert.ToComment(comment))
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeleteIssueComment delete a comment from an issue
|
// DeleteIssueComment delete a comment from an issue
|
||||||
|
|
|
@ -10,6 +10,7 @@ import (
|
||||||
|
|
||||||
"code.gitea.io/gitea/models"
|
"code.gitea.io/gitea/models"
|
||||||
"code.gitea.io/gitea/modules/context"
|
"code.gitea.io/gitea/modules/context"
|
||||||
|
"code.gitea.io/gitea/modules/convert"
|
||||||
api "code.gitea.io/gitea/modules/structs"
|
api "code.gitea.io/gitea/modules/structs"
|
||||||
"code.gitea.io/gitea/routers/api/v1/utils"
|
"code.gitea.io/gitea/routers/api/v1/utils"
|
||||||
)
|
)
|
||||||
|
@ -75,7 +76,7 @@ func GetIssueCommentReactions(ctx *context.APIContext) {
|
||||||
var result []api.Reaction
|
var result []api.Reaction
|
||||||
for _, r := range reactions {
|
for _, r := range reactions {
|
||||||
result = append(result, api.Reaction{
|
result = append(result, api.Reaction{
|
||||||
User: r.User.APIFormat(),
|
User: convert.ToUser(r.User, ctx.IsSigned, false),
|
||||||
Reaction: r.Type,
|
Reaction: r.Type,
|
||||||
Created: r.CreatedUnix.AsTime(),
|
Created: r.CreatedUnix.AsTime(),
|
||||||
})
|
})
|
||||||
|
@ -193,7 +194,7 @@ func changeIssueCommentReaction(ctx *context.APIContext, form api.EditReactionOp
|
||||||
ctx.Error(http.StatusForbidden, err.Error(), err)
|
ctx.Error(http.StatusForbidden, err.Error(), err)
|
||||||
} else if models.IsErrReactionAlreadyExist(err) {
|
} else if models.IsErrReactionAlreadyExist(err) {
|
||||||
ctx.JSON(http.StatusOK, api.Reaction{
|
ctx.JSON(http.StatusOK, api.Reaction{
|
||||||
User: ctx.User.APIFormat(),
|
User: convert.ToUser(ctx.User, true, true),
|
||||||
Reaction: reaction.Type,
|
Reaction: reaction.Type,
|
||||||
Created: reaction.CreatedUnix.AsTime(),
|
Created: reaction.CreatedUnix.AsTime(),
|
||||||
})
|
})
|
||||||
|
@ -204,7 +205,7 @@ func changeIssueCommentReaction(ctx *context.APIContext, form api.EditReactionOp
|
||||||
}
|
}
|
||||||
|
|
||||||
ctx.JSON(http.StatusCreated, api.Reaction{
|
ctx.JSON(http.StatusCreated, api.Reaction{
|
||||||
User: ctx.User.APIFormat(),
|
User: convert.ToUser(ctx.User, true, true),
|
||||||
Reaction: reaction.Type,
|
Reaction: reaction.Type,
|
||||||
Created: reaction.CreatedUnix.AsTime(),
|
Created: reaction.CreatedUnix.AsTime(),
|
||||||
})
|
})
|
||||||
|
@ -289,7 +290,7 @@ func GetIssueReactions(ctx *context.APIContext) {
|
||||||
var result []api.Reaction
|
var result []api.Reaction
|
||||||
for _, r := range reactions {
|
for _, r := range reactions {
|
||||||
result = append(result, api.Reaction{
|
result = append(result, api.Reaction{
|
||||||
User: r.User.APIFormat(),
|
User: convert.ToUser(r.User, ctx.IsSigned, false),
|
||||||
Reaction: r.Type,
|
Reaction: r.Type,
|
||||||
Created: r.CreatedUnix.AsTime(),
|
Created: r.CreatedUnix.AsTime(),
|
||||||
})
|
})
|
||||||
|
@ -402,7 +403,7 @@ func changeIssueReaction(ctx *context.APIContext, form api.EditReactionOption, i
|
||||||
ctx.Error(http.StatusForbidden, err.Error(), err)
|
ctx.Error(http.StatusForbidden, err.Error(), err)
|
||||||
} else if models.IsErrReactionAlreadyExist(err) {
|
} else if models.IsErrReactionAlreadyExist(err) {
|
||||||
ctx.JSON(http.StatusOK, api.Reaction{
|
ctx.JSON(http.StatusOK, api.Reaction{
|
||||||
User: ctx.User.APIFormat(),
|
User: convert.ToUser(ctx.User, true, true),
|
||||||
Reaction: reaction.Type,
|
Reaction: reaction.Type,
|
||||||
Created: reaction.CreatedUnix.AsTime(),
|
Created: reaction.CreatedUnix.AsTime(),
|
||||||
})
|
})
|
||||||
|
@ -413,7 +414,7 @@ func changeIssueReaction(ctx *context.APIContext, form api.EditReactionOption, i
|
||||||
}
|
}
|
||||||
|
|
||||||
ctx.JSON(http.StatusCreated, api.Reaction{
|
ctx.JSON(http.StatusCreated, api.Reaction{
|
||||||
User: ctx.User.APIFormat(),
|
User: convert.ToUser(ctx.User, true, true),
|
||||||
Reaction: reaction.Type,
|
Reaction: reaction.Type,
|
||||||
Created: reaction.CreatedUnix.AsTime(),
|
Created: reaction.CreatedUnix.AsTime(),
|
||||||
})
|
})
|
||||||
|
|
|
@ -9,6 +9,7 @@ import (
|
||||||
|
|
||||||
"code.gitea.io/gitea/models"
|
"code.gitea.io/gitea/models"
|
||||||
"code.gitea.io/gitea/modules/context"
|
"code.gitea.io/gitea/modules/context"
|
||||||
|
"code.gitea.io/gitea/modules/convert"
|
||||||
api "code.gitea.io/gitea/modules/structs"
|
api "code.gitea.io/gitea/modules/structs"
|
||||||
"code.gitea.io/gitea/routers/api/v1/utils"
|
"code.gitea.io/gitea/routers/api/v1/utils"
|
||||||
)
|
)
|
||||||
|
@ -276,6 +277,10 @@ func GetIssueSubscribers(ctx *context.APIContext) {
|
||||||
ctx.Error(http.StatusInternalServerError, "GetUsersByIDs", err)
|
ctx.Error(http.StatusInternalServerError, "GetUsersByIDs", err)
|
||||||
return
|
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)
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,6 +9,7 @@ import (
|
||||||
|
|
||||||
"code.gitea.io/gitea/models"
|
"code.gitea.io/gitea/models"
|
||||||
"code.gitea.io/gitea/modules/context"
|
"code.gitea.io/gitea/modules/context"
|
||||||
|
"code.gitea.io/gitea/modules/convert"
|
||||||
api "code.gitea.io/gitea/modules/structs"
|
api "code.gitea.io/gitea/modules/structs"
|
||||||
"code.gitea.io/gitea/routers/api/v1/utils"
|
"code.gitea.io/gitea/routers/api/v1/utils"
|
||||||
releaseservice "code.gitea.io/gitea/services/release"
|
releaseservice "code.gitea.io/gitea/services/release"
|
||||||
|
@ -60,7 +61,7 @@ func GetRelease(ctx *context.APIContext) {
|
||||||
ctx.Error(http.StatusInternalServerError, "LoadAttributes", err)
|
ctx.Error(http.StatusInternalServerError, "LoadAttributes", err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
ctx.JSON(http.StatusOK, release.APIFormat())
|
ctx.JSON(http.StatusOK, convert.ToRelease(release))
|
||||||
}
|
}
|
||||||
|
|
||||||
// ListReleases list a repository's releases
|
// ListReleases list a repository's releases
|
||||||
|
@ -117,7 +118,7 @@ func ListReleases(ctx *context.APIContext) {
|
||||||
ctx.Error(http.StatusInternalServerError, "LoadAttributes", err)
|
ctx.Error(http.StatusInternalServerError, "LoadAttributes", err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
rels[i] = release.APIFormat()
|
rels[i] = convert.ToRelease(release)
|
||||||
}
|
}
|
||||||
ctx.JSON(http.StatusOK, rels)
|
ctx.JSON(http.StatusOK, rels)
|
||||||
}
|
}
|
||||||
|
@ -205,7 +206,7 @@ func CreateRelease(ctx *context.APIContext, form api.CreateReleaseOption) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ctx.JSON(http.StatusCreated, rel.APIFormat())
|
ctx.JSON(http.StatusCreated, convert.ToRelease(rel))
|
||||||
}
|
}
|
||||||
|
|
||||||
// EditRelease edit a release
|
// EditRelease edit a release
|
||||||
|
@ -288,7 +289,7 @@ func EditRelease(ctx *context.APIContext, form api.EditReleaseOption) {
|
||||||
ctx.Error(http.StatusInternalServerError, "LoadAttributes", err)
|
ctx.Error(http.StatusInternalServerError, "LoadAttributes", err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
ctx.JSON(http.StatusOK, rel.APIFormat())
|
ctx.JSON(http.StatusOK, convert.ToRelease(rel))
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeleteRelease delete a release from a repository
|
// DeleteRelease delete a release from a repository
|
||||||
|
|
|
@ -9,6 +9,7 @@ import (
|
||||||
|
|
||||||
"code.gitea.io/gitea/models"
|
"code.gitea.io/gitea/models"
|
||||||
"code.gitea.io/gitea/modules/context"
|
"code.gitea.io/gitea/modules/context"
|
||||||
|
"code.gitea.io/gitea/modules/convert"
|
||||||
"code.gitea.io/gitea/modules/log"
|
"code.gitea.io/gitea/modules/log"
|
||||||
"code.gitea.io/gitea/modules/setting"
|
"code.gitea.io/gitea/modules/setting"
|
||||||
api "code.gitea.io/gitea/modules/structs"
|
api "code.gitea.io/gitea/modules/structs"
|
||||||
|
@ -62,7 +63,7 @@ func GetReleaseAttachment(ctx *context.APIContext) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
// FIXME Should prove the existence of the given repo, but results in unnecessary database requests
|
// 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
|
// ListReleaseAttachments lists all attachments of the release
|
||||||
|
@ -107,7 +108,7 @@ func ListReleaseAttachments(ctx *context.APIContext) {
|
||||||
ctx.Error(http.StatusInternalServerError, "LoadAttributes", err)
|
ctx.Error(http.StatusInternalServerError, "LoadAttributes", err)
|
||||||
return
|
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
|
// CreateReleaseAttachment creates an attachment and saves the given file
|
||||||
|
@ -203,7 +204,7 @@ func CreateReleaseAttachment(ctx *context.APIContext) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
ctx.JSON(http.StatusCreated, attach.APIFormat())
|
ctx.JSON(http.StatusCreated, convert.ToReleaseAttachment(attach))
|
||||||
}
|
}
|
||||||
|
|
||||||
// EditReleaseAttachment updates the given attachment
|
// EditReleaseAttachment updates the given attachment
|
||||||
|
@ -267,7 +268,7 @@ func EditReleaseAttachment(ctx *context.APIContext, form api.EditAttachmentOptio
|
||||||
if err := models.UpdateAttachment(attach); err != nil {
|
if err := models.UpdateAttachment(attach); err != nil {
|
||||||
ctx.Error(http.StatusInternalServerError, "UpdateAttachment", attach)
|
ctx.Error(http.StatusInternalServerError, "UpdateAttachment", attach)
|
||||||
}
|
}
|
||||||
ctx.JSON(http.StatusCreated, attach.APIFormat())
|
ctx.JSON(http.StatusCreated, convert.ToReleaseAttachment(attach))
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeleteReleaseAttachment delete a given attachment
|
// DeleteReleaseAttachment delete a given attachment
|
||||||
|
|
|
@ -9,6 +9,7 @@ import (
|
||||||
|
|
||||||
"code.gitea.io/gitea/models"
|
"code.gitea.io/gitea/models"
|
||||||
"code.gitea.io/gitea/modules/context"
|
"code.gitea.io/gitea/modules/context"
|
||||||
|
"code.gitea.io/gitea/modules/convert"
|
||||||
)
|
)
|
||||||
|
|
||||||
// GetReleaseTag get a single release of a repository by its tagname
|
// 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)
|
ctx.Error(http.StatusInternalServerError, "LoadAttributes", err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
ctx.JSON(http.StatusOK, release.APIFormat())
|
ctx.JSON(http.StatusOK, convert.ToRelease(release))
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,6 +10,7 @@ import (
|
||||||
|
|
||||||
"code.gitea.io/gitea/models"
|
"code.gitea.io/gitea/models"
|
||||||
"code.gitea.io/gitea/modules/context"
|
"code.gitea.io/gitea/modules/context"
|
||||||
|
"code.gitea.io/gitea/modules/convert"
|
||||||
"code.gitea.io/gitea/modules/repofiles"
|
"code.gitea.io/gitea/modules/repofiles"
|
||||||
api "code.gitea.io/gitea/modules/structs"
|
api "code.gitea.io/gitea/modules/structs"
|
||||||
"code.gitea.io/gitea/routers/api/v1/utils"
|
"code.gitea.io/gitea/routers/api/v1/utils"
|
||||||
|
@ -64,7 +65,7 @@ func NewCommitStatus(ctx *context.APIContext, form api.CreateStatusOption) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
ctx.JSON(http.StatusCreated, status.APIFormat())
|
ctx.JSON(http.StatusCreated, convert.ToCommitStatus(status))
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetCommitStatuses returns all statuses for any given commit hash
|
// 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))
|
apiStatuses := make([]*api.Status, 0, len(statuses))
|
||||||
for _, status := range statuses {
|
for _, status := range statuses {
|
||||||
apiStatuses = append(apiStatuses, status.APIFormat())
|
apiStatuses = append(apiStatuses, convert.ToCommitStatus(status))
|
||||||
}
|
}
|
||||||
|
|
||||||
ctx.SetLinkHeader(int(maxResults), listOptions.PageSize)
|
ctx.SetLinkHeader(int(maxResults), listOptions.PageSize)
|
||||||
|
@ -305,7 +306,7 @@ func GetCombinedCommitStatusByRef(ctx *context.APIContext) {
|
||||||
|
|
||||||
retStatus.Statuses = make([]*api.Status, 0, len(statuses))
|
retStatus.Statuses = make([]*api.Status, 0, len(statuses))
|
||||||
for _, status := range 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) {
|
if status.State.NoBetterThan(retStatus.State) {
|
||||||
retStatus.State = status.State
|
retStatus.State = status.State
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,6 +19,7 @@ import (
|
||||||
"code.gitea.io/gitea/modules/auth"
|
"code.gitea.io/gitea/modules/auth"
|
||||||
"code.gitea.io/gitea/modules/base"
|
"code.gitea.io/gitea/modules/base"
|
||||||
"code.gitea.io/gitea/modules/context"
|
"code.gitea.io/gitea/modules/context"
|
||||||
|
"code.gitea.io/gitea/modules/convert"
|
||||||
"code.gitea.io/gitea/modules/git"
|
"code.gitea.io/gitea/modules/git"
|
||||||
issue_indexer "code.gitea.io/gitea/modules/indexer/issues"
|
issue_indexer "code.gitea.io/gitea/modules/indexer/issues"
|
||||||
"code.gitea.io/gitea/modules/log"
|
"code.gitea.io/gitea/modules/log"
|
||||||
|
@ -2453,7 +2454,7 @@ func GetIssueAttachments(ctx *context.Context) {
|
||||||
issue := GetActionIssue(ctx)
|
issue := GetActionIssue(ctx)
|
||||||
var attachments = make([]*api.Attachment, len(issue.Attachments))
|
var attachments = make([]*api.Attachment, len(issue.Attachments))
|
||||||
for i := 0; i < len(issue.Attachments); i++ {
|
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)
|
ctx.JSON(200, attachments)
|
||||||
}
|
}
|
||||||
|
@ -2472,7 +2473,7 @@ func GetCommentAttachments(ctx *context.Context) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
for i := 0; i < len(comment.Attachments); i++ {
|
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)
|
ctx.JSON(200, attachments)
|
||||||
|
|
|
@ -16,6 +16,7 @@ import (
|
||||||
"code.gitea.io/gitea/modules/auth"
|
"code.gitea.io/gitea/modules/auth"
|
||||||
"code.gitea.io/gitea/modules/base"
|
"code.gitea.io/gitea/modules/base"
|
||||||
"code.gitea.io/gitea/modules/context"
|
"code.gitea.io/gitea/modules/context"
|
||||||
|
"code.gitea.io/gitea/modules/convert"
|
||||||
"code.gitea.io/gitea/modules/git"
|
"code.gitea.io/gitea/modules/git"
|
||||||
"code.gitea.io/gitea/modules/setting"
|
"code.gitea.io/gitea/modules/setting"
|
||||||
api "code.gitea.io/gitea/modules/structs"
|
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{
|
p := &api.PushPayload{
|
||||||
Ref: git.BranchPrefix + ctx.Repo.Repository.DefaultBranch,
|
Ref: git.BranchPrefix + ctx.Repo.Repository.DefaultBranch,
|
||||||
Before: commit.ID.String(),
|
Before: commit.ID.String(),
|
||||||
|
|
Loading…
Reference in a new issue