Add ListPullRequestFiles #607

Merged
6543 merged 5 commits from qwerty287/go-sdk:changed-files into main 2022-10-16 18:33:30 +00:00
2 changed files with 41 additions and 0 deletions

View File

@ -60,6 +60,19 @@ type PullRequest struct {
Closed *time.Time `json:"closed_at"`
}
// ChangedFile is a changed file in a diff
type ChangedFile struct {
Filename string `json:"filename"`
PreviousFilename string `json:"previous_filename"`
qwerty287 marked this conversation as resolved Outdated

omitempty is unnecessary to specify here, it's only used for marshalling JSON, not for unmarshalling(current use-case). Please remove it, as well for the other fields that have this tag.

`omitempty` is unnecessary to specify here, it's only used for marshalling JSON, not for unmarshalling(current use-case). Please remove it, as well for the other fields that have this tag.
See https://gitea.com/gitea/go-sdk/commit/ed80485f884f9cca9eb9a0a6cf33915631ffa5e3
Status string `json:"status"`
Additions int `json:"additions"`
Deletions int `json:"deletions"`
Changes int `json:"changes"`
HTMLURL string `json:"html_url"`
ContentsURL string `json:"contents_url"`
RawURL string `json:"raw_url"`
}
// ListPullRequestsOptions options for listing pull requests
type ListPullRequestsOptions struct {
ListOptions
@ -348,3 +361,21 @@ func fixPullHeadSha(client *Client, pr *PullRequest) error {
}
return nil
}
// ListPullRequestFilesOptions options for listing pull request files
type ListPullRequestFilesOptions struct {
ListOptions
}
// ListPullRequestFiles list changed files for a pull request
func (c *Client) ListPullRequestFiles(owner, repo string, index int64, opt ListPullRequestFilesOptions) ([]*ChangedFile, *Response, error) {
if err := escapeValidatePathSegments(&owner, &repo); err != nil {
return nil, nil, err
}
link, _ := url.Parse(fmt.Sprintf("/repos/%s/%s/pulls/%d/files", owner, repo, index))
opt.setDefaults()
files := make([]*ChangedFile, 0, opt.PageSize)
link.RawQuery = opt.getURLQuery().Encode()
resp, err := c.getParsedResponse("GET", link.String(), nil, nil, &files)
return files, resp, err
}

View File

@ -71,6 +71,16 @@ func TestPull(t *testing.T) {
assert.EqualValues(t, "LICENSE", commits[0].Files[0].Filename)
}
files, _, err := c.ListPullRequestFiles(c.username, repoName, pullUpdateFile.Index, ListPullRequestFilesOptions{})
assert.NoError(t, err)
assert.Len(t, files, 1)
file := files[0]
assert.EqualValues(t, "LICENSE", file.Filename)
assert.EqualValues(t, "changed", file.Status)
assert.EqualValues(t, 3, file.Additions)
assert.EqualValues(t, 9, file.Deletions)
assert.EqualValues(t, 12, file.Changes)
// test Update pull
pr, _, err := c.GetPullRequest(user.UserName, repoName, pullUpdateFile.Index)
assert.NoError(t, err)