* Move pull request api convert to convert package * Rename ToPullRequest to ToAPIPullRequesttags/v1.12.0-dev
| @@ -13,7 +13,6 @@ import ( | |||||
| "code.gitea.io/gitea/modules/git" | "code.gitea.io/gitea/modules/git" | ||||
| "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" | |||||
| "code.gitea.io/gitea/modules/timeutil" | "code.gitea.io/gitea/modules/timeutil" | ||||
| ) | ) | ||||
| @@ -397,139 +396,6 @@ func (pr *PullRequest) GetGitRefName() string { | |||||
| return fmt.Sprintf("refs/pull/%d/head", pr.Index) | return fmt.Sprintf("refs/pull/%d/head", pr.Index) | ||||
| } | } | ||||
| // APIFormat assumes following fields have been assigned with valid values: | |||||
| // Required - Issue | |||||
| // Optional - Merger | |||||
| func (pr *PullRequest) APIFormat() *api.PullRequest { | |||||
| return pr.apiFormat(x) | |||||
| } | |||||
| func (pr *PullRequest) apiFormat(e Engine) *api.PullRequest { | |||||
| var ( | |||||
| baseBranch *git.Branch | |||||
| headBranch *git.Branch | |||||
| baseCommit *git.Commit | |||||
| headCommit *git.Commit | |||||
| err error | |||||
| ) | |||||
| if err = pr.Issue.loadRepo(e); err != nil { | |||||
| log.Error("loadRepo[%d]: %v", pr.ID, err) | |||||
| return nil | |||||
| } | |||||
| apiIssue := pr.Issue.apiFormat(e) | |||||
| if pr.BaseRepo == nil { | |||||
| pr.BaseRepo, err = getRepositoryByID(e, pr.BaseRepoID) | |||||
| if err != nil { | |||||
| log.Error("GetRepositoryById[%d]: %v", pr.ID, err) | |||||
| return nil | |||||
| } | |||||
| } | |||||
| if pr.HeadRepo == nil { | |||||
| pr.HeadRepo, err = getRepositoryByID(e, pr.HeadRepoID) | |||||
| if err != nil { | |||||
| log.Error("GetRepositoryById[%d]: %v", pr.ID, err) | |||||
| return nil | |||||
| } | |||||
| } | |||||
| if err = pr.Issue.loadRepo(e); err != nil { | |||||
| log.Error("pr.Issue.loadRepo[%d]: %v", pr.ID, err) | |||||
| return nil | |||||
| } | |||||
| apiPullRequest := &api.PullRequest{ | |||||
| ID: pr.ID, | |||||
| URL: pr.Issue.HTMLURL(), | |||||
| Index: pr.Index, | |||||
| Poster: apiIssue.Poster, | |||||
| Title: apiIssue.Title, | |||||
| Body: apiIssue.Body, | |||||
| Labels: apiIssue.Labels, | |||||
| Milestone: apiIssue.Milestone, | |||||
| Assignee: apiIssue.Assignee, | |||||
| Assignees: apiIssue.Assignees, | |||||
| State: apiIssue.State, | |||||
| Comments: apiIssue.Comments, | |||||
| HTMLURL: pr.Issue.HTMLURL(), | |||||
| DiffURL: pr.Issue.DiffURL(), | |||||
| PatchURL: pr.Issue.PatchURL(), | |||||
| HasMerged: pr.HasMerged, | |||||
| MergeBase: pr.MergeBase, | |||||
| Deadline: apiIssue.Deadline, | |||||
| Created: pr.Issue.CreatedUnix.AsTimePtr(), | |||||
| Updated: pr.Issue.UpdatedUnix.AsTimePtr(), | |||||
| } | |||||
| baseBranch, err = pr.BaseRepo.GetBranch(pr.BaseBranch) | |||||
| if err != nil { | |||||
| if git.IsErrBranchNotExist(err) { | |||||
| apiPullRequest.Base = nil | |||||
| } else { | |||||
| log.Error("GetBranch[%s]: %v", pr.BaseBranch, err) | |||||
| return nil | |||||
| } | |||||
| } else { | |||||
| apiBaseBranchInfo := &api.PRBranchInfo{ | |||||
| Name: pr.BaseBranch, | |||||
| Ref: pr.BaseBranch, | |||||
| RepoID: pr.BaseRepoID, | |||||
| Repository: pr.BaseRepo.innerAPIFormat(e, AccessModeNone, false), | |||||
| } | |||||
| baseCommit, err = baseBranch.GetCommit() | |||||
| if err != nil { | |||||
| if git.IsErrNotExist(err) { | |||||
| apiBaseBranchInfo.Sha = "" | |||||
| } else { | |||||
| log.Error("GetCommit[%s]: %v", baseBranch.Name, err) | |||||
| return nil | |||||
| } | |||||
| } else { | |||||
| apiBaseBranchInfo.Sha = baseCommit.ID.String() | |||||
| } | |||||
| apiPullRequest.Base = apiBaseBranchInfo | |||||
| } | |||||
| headBranch, err = pr.HeadRepo.GetBranch(pr.HeadBranch) | |||||
| if err != nil { | |||||
| if git.IsErrBranchNotExist(err) { | |||||
| apiPullRequest.Head = nil | |||||
| } else { | |||||
| log.Error("GetBranch[%s]: %v", pr.HeadBranch, err) | |||||
| return nil | |||||
| } | |||||
| } else { | |||||
| apiHeadBranchInfo := &api.PRBranchInfo{ | |||||
| Name: pr.HeadBranch, | |||||
| Ref: pr.HeadBranch, | |||||
| RepoID: pr.HeadRepoID, | |||||
| Repository: pr.HeadRepo.innerAPIFormat(e, AccessModeNone, false), | |||||
| } | |||||
| headCommit, err = headBranch.GetCommit() | |||||
| if err != nil { | |||||
| if git.IsErrNotExist(err) { | |||||
| apiHeadBranchInfo.Sha = "" | |||||
| } else { | |||||
| log.Error("GetCommit[%s]: %v", headBranch.Name, err) | |||||
| return nil | |||||
| } | |||||
| } else { | |||||
| apiHeadBranchInfo.Sha = headCommit.ID.String() | |||||
| } | |||||
| apiPullRequest.Head = apiHeadBranchInfo | |||||
| } | |||||
| if pr.Status != PullRequestStatusChecking { | |||||
| mergeable := !(pr.Status == PullRequestStatusConflict || pr.Status == PullRequestStatusError) && !pr.IsWorkInProgress() | |||||
| apiPullRequest.Mergeable = mergeable | |||||
| } | |||||
| if pr.HasMerged { | |||||
| apiPullRequest.Merged = pr.MergedUnix.AsTimePtr() | |||||
| apiPullRequest.MergedCommitID = &pr.MergedCommitID | |||||
| apiPullRequest.MergedBy = pr.Merger.APIFormat() | |||||
| } | |||||
| return apiPullRequest | |||||
| } | |||||
| func (pr *PullRequest) getHeadRepo(e Engine) (err error) { | func (pr *PullRequest) getHeadRepo(e Engine) (err error) { | ||||
| pr.HeadRepo, err = getRepositoryByID(e, pr.HeadRepoID) | pr.HeadRepo, err = getRepositoryByID(e, pr.HeadRepoID) | ||||
| if err != nil && !IsErrRepoNotExist(err) { | if err != nil && !IsErrRepoNotExist(err) { | ||||
| @@ -29,16 +29,6 @@ func TestPullRequest_LoadIssue(t *testing.T) { | |||||
| assert.Equal(t, int64(2), pr.Issue.ID) | assert.Equal(t, int64(2), pr.Issue.ID) | ||||
| } | } | ||||
| func TestPullRequest_APIFormat(t *testing.T) { | |||||
| assert.NoError(t, PrepareTestDatabase()) | |||||
| pr := AssertExistsAndLoadBean(t, &PullRequest{ID: 1}).(*PullRequest) | |||||
| assert.NoError(t, pr.LoadAttributes()) | |||||
| assert.NoError(t, pr.LoadIssue()) | |||||
| apiPullRequest := pr.APIFormat() | |||||
| assert.NotNil(t, apiPullRequest) | |||||
| assert.Nil(t, apiPullRequest.Head) | |||||
| } | |||||
| func TestPullRequest_GetBaseRepo(t *testing.T) { | func TestPullRequest_GetBaseRepo(t *testing.T) { | ||||
| assert.NoError(t, PrepareTestDatabase()) | assert.NoError(t, PrepareTestDatabase()) | ||||
| pr := AssertExistsAndLoadBean(t, &PullRequest{ID: 1}).(*PullRequest) | pr := AssertExistsAndLoadBean(t, &PullRequest{ID: 1}).(*PullRequest) | ||||
| @@ -0,0 +1,16 @@ | |||||
| // 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 ( | |||||
| "path/filepath" | |||||
| "testing" | |||||
| "code.gitea.io/gitea/models" | |||||
| ) | |||||
| func TestMain(m *testing.M) { | |||||
| models.MainTest(m, filepath.Join("..", "..")) | |||||
| } | |||||
| @@ -0,0 +1,141 @@ | |||||
| // 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" | |||||
| "code.gitea.io/gitea/modules/git" | |||||
| "code.gitea.io/gitea/modules/log" | |||||
| api "code.gitea.io/gitea/modules/structs" | |||||
| ) | |||||
| // ToAPIPullRequest assumes following fields have been assigned with valid values: | |||||
| // Required - Issue | |||||
| // Optional - Merger | |||||
| func ToAPIPullRequest(pr *models.PullRequest) *api.PullRequest { | |||||
| var ( | |||||
| baseBranch *git.Branch | |||||
| headBranch *git.Branch | |||||
| baseCommit *git.Commit | |||||
| headCommit *git.Commit | |||||
| err error | |||||
| ) | |||||
| if err = pr.Issue.LoadRepo(); err != nil { | |||||
| log.Error("loadRepo[%d]: %v", pr.ID, err) | |||||
| return nil | |||||
| } | |||||
| apiIssue := pr.Issue.APIFormat() | |||||
| if pr.BaseRepo == nil { | |||||
| pr.BaseRepo, err = models.GetRepositoryByID(pr.BaseRepoID) | |||||
| if err != nil { | |||||
| log.Error("GetRepositoryById[%d]: %v", pr.ID, err) | |||||
| return nil | |||||
| } | |||||
| } | |||||
| if pr.HeadRepo == nil { | |||||
| pr.HeadRepo, err = models.GetRepositoryByID(pr.HeadRepoID) | |||||
| if err != nil { | |||||
| log.Error("GetRepositoryById[%d]: %v", pr.ID, err) | |||||
| return nil | |||||
| } | |||||
| } | |||||
| if err = pr.Issue.LoadRepo(); err != nil { | |||||
| log.Error("pr.Issue.loadRepo[%d]: %v", pr.ID, err) | |||||
| return nil | |||||
| } | |||||
| apiPullRequest := &api.PullRequest{ | |||||
| ID: pr.ID, | |||||
| URL: pr.Issue.HTMLURL(), | |||||
| Index: pr.Index, | |||||
| Poster: apiIssue.Poster, | |||||
| Title: apiIssue.Title, | |||||
| Body: apiIssue.Body, | |||||
| Labels: apiIssue.Labels, | |||||
| Milestone: apiIssue.Milestone, | |||||
| Assignee: apiIssue.Assignee, | |||||
| Assignees: apiIssue.Assignees, | |||||
| State: apiIssue.State, | |||||
| Comments: apiIssue.Comments, | |||||
| HTMLURL: pr.Issue.HTMLURL(), | |||||
| DiffURL: pr.Issue.DiffURL(), | |||||
| PatchURL: pr.Issue.PatchURL(), | |||||
| HasMerged: pr.HasMerged, | |||||
| MergeBase: pr.MergeBase, | |||||
| Deadline: apiIssue.Deadline, | |||||
| Created: pr.Issue.CreatedUnix.AsTimePtr(), | |||||
| Updated: pr.Issue.UpdatedUnix.AsTimePtr(), | |||||
| } | |||||
| baseBranch, err = pr.BaseRepo.GetBranch(pr.BaseBranch) | |||||
| if err != nil { | |||||
| if git.IsErrBranchNotExist(err) { | |||||
| apiPullRequest.Base = nil | |||||
| } else { | |||||
| log.Error("GetBranch[%s]: %v", pr.BaseBranch, err) | |||||
| return nil | |||||
| } | |||||
| } else { | |||||
| apiBaseBranchInfo := &api.PRBranchInfo{ | |||||
| Name: pr.BaseBranch, | |||||
| Ref: pr.BaseBranch, | |||||
| RepoID: pr.BaseRepoID, | |||||
| Repository: pr.BaseRepo.APIFormat(models.AccessModeNone), | |||||
| } | |||||
| baseCommit, err = baseBranch.GetCommit() | |||||
| if err != nil { | |||||
| if git.IsErrNotExist(err) { | |||||
| apiBaseBranchInfo.Sha = "" | |||||
| } else { | |||||
| log.Error("GetCommit[%s]: %v", baseBranch.Name, err) | |||||
| return nil | |||||
| } | |||||
| } else { | |||||
| apiBaseBranchInfo.Sha = baseCommit.ID.String() | |||||
| } | |||||
| apiPullRequest.Base = apiBaseBranchInfo | |||||
| } | |||||
| headBranch, err = pr.HeadRepo.GetBranch(pr.HeadBranch) | |||||
| if err != nil { | |||||
| if git.IsErrBranchNotExist(err) { | |||||
| apiPullRequest.Head = nil | |||||
| } else { | |||||
| log.Error("GetBranch[%s]: %v", pr.HeadBranch, err) | |||||
| return nil | |||||
| } | |||||
| } else { | |||||
| apiHeadBranchInfo := &api.PRBranchInfo{ | |||||
| Name: pr.HeadBranch, | |||||
| Ref: pr.HeadBranch, | |||||
| RepoID: pr.HeadRepoID, | |||||
| Repository: pr.HeadRepo.APIFormat(models.AccessModeNone), | |||||
| } | |||||
| headCommit, err = headBranch.GetCommit() | |||||
| if err != nil { | |||||
| if git.IsErrNotExist(err) { | |||||
| apiHeadBranchInfo.Sha = "" | |||||
| } else { | |||||
| log.Error("GetCommit[%s]: %v", headBranch.Name, err) | |||||
| return nil | |||||
| } | |||||
| } else { | |||||
| apiHeadBranchInfo.Sha = headCommit.ID.String() | |||||
| } | |||||
| apiPullRequest.Head = apiHeadBranchInfo | |||||
| } | |||||
| if pr.Status != models.PullRequestStatusChecking { | |||||
| mergeable := !(pr.Status == models.PullRequestStatusConflict || pr.Status == models.PullRequestStatusError) && !pr.IsWorkInProgress() | |||||
| apiPullRequest.Mergeable = mergeable | |||||
| } | |||||
| if pr.HasMerged { | |||||
| apiPullRequest.Merged = pr.MergedUnix.AsTimePtr() | |||||
| apiPullRequest.MergedCommitID = &pr.MergedCommitID | |||||
| apiPullRequest.MergedBy = pr.Merger.APIFormat() | |||||
| } | |||||
| return apiPullRequest | |||||
| } | |||||
| @@ -0,0 +1,23 @@ | |||||
| // 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 TestPullRequest_APIFormat(t *testing.T) { | |||||
| assert.NoError(t, models.PrepareTestDatabase()) | |||||
| pr := models.AssertExistsAndLoadBean(t, &models.PullRequest{ID: 1}).(*models.PullRequest) | |||||
| assert.NoError(t, pr.LoadAttributes()) | |||||
| assert.NoError(t, pr.LoadIssue()) | |||||
| apiPullRequest := ToAPIPullRequest(pr) | |||||
| assert.NotNil(t, apiPullRequest) | |||||
| assert.Nil(t, apiPullRequest.Head) | |||||
| } | |||||
| @@ -6,6 +6,7 @@ package webhook | |||||
| import ( | import ( | ||||
| "code.gitea.io/gitea/models" | "code.gitea.io/gitea/models" | ||||
| "code.gitea.io/gitea/modules/convert" | |||||
| "code.gitea.io/gitea/modules/git" | "code.gitea.io/gitea/modules/git" | ||||
| "code.gitea.io/gitea/modules/log" | "code.gitea.io/gitea/modules/log" | ||||
| "code.gitea.io/gitea/modules/notification/base" | "code.gitea.io/gitea/modules/notification/base" | ||||
| @@ -49,7 +50,7 @@ func (m *webhookNotifier) NotifyIssueClearLabels(doer *models.User, issue *model | |||||
| err = webhook_module.PrepareWebhooks(issue.Repo, models.HookEventPullRequest, &api.PullRequestPayload{ | err = webhook_module.PrepareWebhooks(issue.Repo, models.HookEventPullRequest, &api.PullRequestPayload{ | ||||
| Action: api.HookIssueLabelCleared, | Action: api.HookIssueLabelCleared, | ||||
| Index: issue.Index, | Index: issue.Index, | ||||
| PullRequest: issue.PullRequest.APIFormat(), | |||||
| PullRequest: convert.ToAPIPullRequest(issue.PullRequest), | |||||
| Repository: issue.Repo.APIFormat(mode), | Repository: issue.Repo.APIFormat(mode), | ||||
| Sender: doer.APIFormat(), | Sender: doer.APIFormat(), | ||||
| }) | }) | ||||
| @@ -135,7 +136,7 @@ func (m *webhookNotifier) NotifyIssueChangeAssignee(doer *models.User, issue *mo | |||||
| issue.PullRequest.Issue = issue | issue.PullRequest.Issue = issue | ||||
| apiPullRequest := &api.PullRequestPayload{ | apiPullRequest := &api.PullRequestPayload{ | ||||
| Index: issue.Index, | Index: issue.Index, | ||||
| PullRequest: issue.PullRequest.APIFormat(), | |||||
| PullRequest: convert.ToAPIPullRequest(issue.PullRequest), | |||||
| Repository: issue.Repo.APIFormat(mode), | Repository: issue.Repo.APIFormat(mode), | ||||
| Sender: doer.APIFormat(), | Sender: doer.APIFormat(), | ||||
| } | } | ||||
| @@ -187,7 +188,7 @@ func (m *webhookNotifier) NotifyIssueChangeTitle(doer *models.User, issue *model | |||||
| From: oldTitle, | From: oldTitle, | ||||
| }, | }, | ||||
| }, | }, | ||||
| PullRequest: issue.PullRequest.APIFormat(), | |||||
| PullRequest: convert.ToAPIPullRequest(issue.PullRequest), | |||||
| Repository: issue.Repo.APIFormat(mode), | Repository: issue.Repo.APIFormat(mode), | ||||
| Sender: doer.APIFormat(), | Sender: doer.APIFormat(), | ||||
| }) | }) | ||||
| @@ -222,7 +223,7 @@ func (m *webhookNotifier) NotifyIssueChangeStatus(doer *models.User, issue *mode | |||||
| // Merge pull request calls issue.changeStatus so we need to handle separately. | // Merge pull request calls issue.changeStatus so we need to handle separately. | ||||
| apiPullRequest := &api.PullRequestPayload{ | apiPullRequest := &api.PullRequestPayload{ | ||||
| Index: issue.Index, | Index: issue.Index, | ||||
| PullRequest: issue.PullRequest.APIFormat(), | |||||
| PullRequest: convert.ToAPIPullRequest(issue.PullRequest), | |||||
| Repository: issue.Repo.APIFormat(mode), | Repository: issue.Repo.APIFormat(mode), | ||||
| Sender: doer.APIFormat(), | Sender: doer.APIFormat(), | ||||
| } | } | ||||
| @@ -291,7 +292,7 @@ func (m *webhookNotifier) NotifyNewPullRequest(pull *models.PullRequest) { | |||||
| if err := webhook_module.PrepareWebhooks(pull.Issue.Repo, models.HookEventPullRequest, &api.PullRequestPayload{ | if err := webhook_module.PrepareWebhooks(pull.Issue.Repo, models.HookEventPullRequest, &api.PullRequestPayload{ | ||||
| Action: api.HookIssueOpened, | Action: api.HookIssueOpened, | ||||
| Index: pull.Issue.Index, | Index: pull.Issue.Index, | ||||
| PullRequest: pull.APIFormat(), | |||||
| PullRequest: convert.ToAPIPullRequest(pull), | |||||
| Repository: pull.Issue.Repo.APIFormat(mode), | Repository: pull.Issue.Repo.APIFormat(mode), | ||||
| Sender: pull.Issue.Poster.APIFormat(), | Sender: pull.Issue.Poster.APIFormat(), | ||||
| }); err != nil { | }); err != nil { | ||||
| @@ -312,7 +313,7 @@ func (m *webhookNotifier) NotifyIssueChangeContent(doer *models.User, issue *mod | |||||
| From: oldContent, | From: oldContent, | ||||
| }, | }, | ||||
| }, | }, | ||||
| PullRequest: issue.PullRequest.APIFormat(), | |||||
| PullRequest: convert.ToAPIPullRequest(issue.PullRequest), | |||||
| Repository: issue.Repo.APIFormat(mode), | Repository: issue.Repo.APIFormat(mode), | ||||
| Sender: doer.APIFormat(), | Sender: doer.APIFormat(), | ||||
| }) | }) | ||||
| @@ -439,7 +440,7 @@ func (m *webhookNotifier) NotifyIssueChangeLabels(doer *models.User, issue *mode | |||||
| err = webhook_module.PrepareWebhooks(issue.Repo, models.HookEventPullRequest, &api.PullRequestPayload{ | err = webhook_module.PrepareWebhooks(issue.Repo, models.HookEventPullRequest, &api.PullRequestPayload{ | ||||
| Action: api.HookIssueLabelUpdated, | Action: api.HookIssueLabelUpdated, | ||||
| Index: issue.Index, | Index: issue.Index, | ||||
| PullRequest: issue.PullRequest.APIFormat(), | |||||
| PullRequest: convert.ToAPIPullRequest(issue.PullRequest), | |||||
| Repository: issue.Repo.APIFormat(models.AccessModeNone), | Repository: issue.Repo.APIFormat(models.AccessModeNone), | ||||
| Sender: doer.APIFormat(), | Sender: doer.APIFormat(), | ||||
| }) | }) | ||||
| @@ -481,7 +482,7 @@ func (m *webhookNotifier) NotifyIssueChangeMilestone(doer *models.User, issue *m | |||||
| err = webhook_module.PrepareWebhooks(issue.Repo, models.HookEventPullRequest, &api.PullRequestPayload{ | err = webhook_module.PrepareWebhooks(issue.Repo, models.HookEventPullRequest, &api.PullRequestPayload{ | ||||
| Action: hookAction, | Action: hookAction, | ||||
| Index: issue.Index, | Index: issue.Index, | ||||
| PullRequest: issue.PullRequest.APIFormat(), | |||||
| PullRequest: convert.ToAPIPullRequest(issue.PullRequest), | |||||
| Repository: issue.Repo.APIFormat(mode), | Repository: issue.Repo.APIFormat(mode), | ||||
| Sender: doer.APIFormat(), | Sender: doer.APIFormat(), | ||||
| }) | }) | ||||
| @@ -547,7 +548,7 @@ func (*webhookNotifier) NotifyMergePullRequest(pr *models.PullRequest, doer *mod | |||||
| // Merge pull request calls issue.changeStatus so we need to handle separately. | // Merge pull request calls issue.changeStatus so we need to handle separately. | ||||
| apiPullRequest := &api.PullRequestPayload{ | apiPullRequest := &api.PullRequestPayload{ | ||||
| Index: pr.Issue.Index, | Index: pr.Issue.Index, | ||||
| PullRequest: pr.APIFormat(), | |||||
| PullRequest: convert.ToAPIPullRequest(pr), | |||||
| Repository: pr.Issue.Repo.APIFormat(mode), | Repository: pr.Issue.Repo.APIFormat(mode), | ||||
| Sender: doer.APIFormat(), | Sender: doer.APIFormat(), | ||||
| Action: api.HookIssueClosed, | Action: api.HookIssueClosed, | ||||
| @@ -580,7 +581,7 @@ func (m *webhookNotifier) NotifyPullRequestChangeTargetBranch(doer *models.User, | |||||
| From: oldBranch, | From: oldBranch, | ||||
| }, | }, | ||||
| }, | }, | ||||
| PullRequest: issue.PullRequest.APIFormat(), | |||||
| PullRequest: convert.ToAPIPullRequest(issue.PullRequest), | |||||
| Repository: issue.Repo.APIFormat(mode), | Repository: issue.Repo.APIFormat(mode), | ||||
| Sender: doer.APIFormat(), | Sender: doer.APIFormat(), | ||||
| }) | }) | ||||
| @@ -619,7 +620,7 @@ func (m *webhookNotifier) NotifyPullRequestReview(pr *models.PullRequest, review | |||||
| if err := webhook_module.PrepareWebhooks(review.Issue.Repo, reviewHookType, &api.PullRequestPayload{ | if err := webhook_module.PrepareWebhooks(review.Issue.Repo, reviewHookType, &api.PullRequestPayload{ | ||||
| Action: api.HookIssueSynchronized, | Action: api.HookIssueSynchronized, | ||||
| Index: review.Issue.Index, | Index: review.Issue.Index, | ||||
| PullRequest: pr.APIFormat(), | |||||
| PullRequest: convert.ToAPIPullRequest(pr), | |||||
| Repository: review.Issue.Repo.APIFormat(mode), | Repository: review.Issue.Repo.APIFormat(mode), | ||||
| Sender: review.Reviewer.APIFormat(), | Sender: review.Reviewer.APIFormat(), | ||||
| Review: &api.ReviewPayload{ | Review: &api.ReviewPayload{ | ||||
| @@ -674,7 +675,7 @@ func (m *webhookNotifier) NotifyPullRequestSynchronized(doer *models.User, pr *m | |||||
| if err := webhook_module.PrepareWebhooks(pr.Issue.Repo, models.HookEventPullRequest, &api.PullRequestPayload{ | if err := webhook_module.PrepareWebhooks(pr.Issue.Repo, models.HookEventPullRequest, &api.PullRequestPayload{ | ||||
| Action: api.HookIssueSynchronized, | Action: api.HookIssueSynchronized, | ||||
| Index: pr.Issue.Index, | Index: pr.Issue.Index, | ||||
| PullRequest: pr.Issue.PullRequest.APIFormat(), | |||||
| PullRequest: convert.ToAPIPullRequest(pr), | |||||
| Repository: pr.Issue.Repo.APIFormat(models.AccessModeNone), | Repository: pr.Issue.Repo.APIFormat(models.AccessModeNone), | ||||
| Sender: doer.APIFormat(), | Sender: doer.APIFormat(), | ||||
| }); err != nil { | }); err != nil { | ||||
| @@ -13,6 +13,7 @@ import ( | |||||
| "code.gitea.io/gitea/models" | "code.gitea.io/gitea/models" | ||||
| "code.gitea.io/gitea/modules/auth" | "code.gitea.io/gitea/modules/auth" | ||||
| "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/log" | "code.gitea.io/gitea/modules/log" | ||||
| "code.gitea.io/gitea/modules/notification" | "code.gitea.io/gitea/modules/notification" | ||||
| @@ -102,7 +103,7 @@ func ListPullRequests(ctx *context.APIContext, form api.ListPullRequestsOptions) | |||||
| ctx.Error(http.StatusInternalServerError, "GetHeadRepo", err) | ctx.Error(http.StatusInternalServerError, "GetHeadRepo", err) | ||||
| return | return | ||||
| } | } | ||||
| apiPrs[i] = prs[i].APIFormat() | |||||
| apiPrs[i] = convert.ToAPIPullRequest(prs[i]) | |||||
| } | } | ||||
| ctx.SetLinkHeader(int(maxResults), models.ItemsPerPage) | ctx.SetLinkHeader(int(maxResults), models.ItemsPerPage) | ||||
| @@ -157,7 +158,7 @@ func GetPullRequest(ctx *context.APIContext) { | |||||
| ctx.Error(http.StatusInternalServerError, "GetHeadRepo", err) | ctx.Error(http.StatusInternalServerError, "GetHeadRepo", err) | ||||
| return | return | ||||
| } | } | ||||
| ctx.JSON(http.StatusOK, pr.APIFormat()) | |||||
| ctx.JSON(http.StatusOK, convert.ToAPIPullRequest(pr)) | |||||
| } | } | ||||
| // CreatePullRequest does what it says | // CreatePullRequest does what it says | ||||
| @@ -321,7 +322,7 @@ func CreatePullRequest(ctx *context.APIContext, form api.CreatePullRequestOption | |||||
| notification.NotifyNewPullRequest(pr) | notification.NotifyNewPullRequest(pr) | ||||
| log.Trace("Pull request created: %d/%d", repo.ID, prIssue.ID) | log.Trace("Pull request created: %d/%d", repo.ID, prIssue.ID) | ||||
| ctx.JSON(http.StatusCreated, pr.APIFormat()) | |||||
| ctx.JSON(http.StatusCreated, convert.ToAPIPullRequest(pr)) | |||||
| } | } | ||||
| // EditPullRequest does what it says | // EditPullRequest does what it says | ||||
| @@ -479,7 +480,7 @@ func EditPullRequest(ctx *context.APIContext, form api.EditPullRequestOption) { | |||||
| } | } | ||||
| // TODO this should be 200, not 201 | // TODO this should be 200, not 201 | ||||
| ctx.JSON(http.StatusCreated, pr.APIFormat()) | |||||
| ctx.JSON(http.StatusCreated, convert.ToAPIPullRequest(pr)) | |||||
| } | } | ||||
| // IsPullRequestMerged checks if a PR exists given an index | // IsPullRequestMerged checks if a PR exists given an index | ||||