GetPullRequestDiff: add PullRequestDiffOptions param (#542)
this is for the upstream change in https://github.com/go-gitea/gitea/pull/17158 Co-authored-by: Norwin <git@nroo.de> Reviewed-on: https://gitea.com/gitea/go-sdk/pulls/542 Reviewed-by: Lunny Xiao <xiaolunwen@gmail.com> Reviewed-by: 6543 <6543@obermui.de> Co-authored-by: Norwin <noerw@noreply.gitea.io> Co-committed-by: Norwin <noerw@noreply.gitea.io>
This commit is contained in:
parent
d19bc07721
commit
3ff2c60a86
4 changed files with 55 additions and 11 deletions
|
@ -1,7 +1,7 @@
|
||||||
# Migration Guide: v0.14 to v0.15
|
# Migration Guide: v0.14 to v0.15
|
||||||
|
|
||||||
v0.15.0 introduces a number of api changes, through which it should not be difficult to migrate.
|
v0.15.0 introduces a number of API changes, which should be simple to migrate.
|
||||||
Just follow this guid and if you still encounter problems, ask for help on discord or feel free to create an issue.
|
Just follow this guide and if you still encounter problems, ask for help on Discord or feel free to create an issue.
|
||||||
|
|
||||||
<!-- toc -->
|
<!-- toc -->
|
||||||
|
|
||||||
|
|
21
docs/migrate-v0.15-to-v0.16.md
Normal file
21
docs/migrate-v0.15-to-v0.16.md
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
# Migration Guide: v0.15 to v0.16
|
||||||
|
|
||||||
|
v0.16.0 introduces a number of API changes, which should be simple to migrate.
|
||||||
|
Just follow this guide and if you still encounter problems, ask for help on Discord or feel free to create an issue.
|
||||||
|
|
||||||
|
<!-- toc -->
|
||||||
|
|
||||||
|
- [Upstream API changes](#upstream-api-changes)
|
||||||
|
- [GetPullRequestDiff: add PullRequestDiffOption parameter (#542)](#getpullrequestdiff)
|
||||||
|
|
||||||
|
<!-- tocstop -->
|
||||||
|
|
||||||
|
## Upstream API changes
|
||||||
|
|
||||||
|
As we aim to track API changes in Gitea 1.16 with this SDK release, you may find this [summary listing of changes](https://gitea.com/gitea/go-sdk/issues/558) helpful.
|
||||||
|
|
||||||
|
## GetPullRequestDiff
|
||||||
|
Added new parameter `opts PullRequestDiffOption`. Gitea 1.16 will default to omit binary file changes in diffs; if you still need that information, set `opts.Binary = true`.
|
||||||
|
Related PRs:
|
||||||
|
- [go-sdk#542](https://gitea.com/gitea/go-sdk/pulls/542)
|
||||||
|
- [gitea#17158](https://github.com/go-gitea/gitea/pull/17158)
|
|
@ -264,9 +264,29 @@ func (c *Client) IsPullRequestMerged(owner, repo string, index int64) (bool, *Re
|
||||||
return status == 204, resp, nil
|
return status == 204, resp, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// PullRequestDiffOptions options for GET /repos/<owner>/<repo>/pulls/<idx>.[diff|patch]
|
||||||
|
type PullRequestDiffOptions struct {
|
||||||
|
// Include binary file changes when requesting a .diff
|
||||||
|
Binary bool
|
||||||
|
}
|
||||||
|
|
||||||
|
// QueryEncode converts the options to a query string
|
||||||
|
func (o PullRequestDiffOptions) QueryEncode() string {
|
||||||
|
query := make(url.Values)
|
||||||
|
query.Add("binary", fmt.Sprintf("%v", o.Binary))
|
||||||
|
return query.Encode()
|
||||||
|
}
|
||||||
|
|
||||||
|
type pullRequestDiffType string
|
||||||
|
|
||||||
|
const (
|
||||||
|
pullRequestDiffTypeDiff pullRequestDiffType = "diff"
|
||||||
|
pullRequestDiffTypePatch pullRequestDiffType = "patch"
|
||||||
|
)
|
||||||
|
|
||||||
// getPullRequestDiffOrPatch gets the patch or diff file as bytes for a PR
|
// getPullRequestDiffOrPatch gets the patch or diff file as bytes for a PR
|
||||||
func (c *Client) getPullRequestDiffOrPatch(owner, repo, kind string, index int64) ([]byte, *Response, error) {
|
func (c *Client) getPullRequestDiffOrPatch(owner, repo string, kind pullRequestDiffType, index int64, opts PullRequestDiffOptions) ([]byte, *Response, error) {
|
||||||
if err := escapeValidatePathSegments(&owner, &repo, &kind); err != nil {
|
if err := escapeValidatePathSegments(&owner, &repo); err != nil {
|
||||||
return nil, nil, err
|
return nil, nil, err
|
||||||
}
|
}
|
||||||
if err := c.checkServerVersionGreaterThanOrEqual(version1_13_0); err != nil {
|
if err := c.checkServerVersionGreaterThanOrEqual(version1_13_0); err != nil {
|
||||||
|
@ -277,19 +297,20 @@ func (c *Client) getPullRequestDiffOrPatch(owner, repo, kind string, index int64
|
||||||
if r.Private {
|
if r.Private {
|
||||||
return nil, nil, err
|
return nil, nil, err
|
||||||
}
|
}
|
||||||
return c.getWebResponse("GET", fmt.Sprintf("/%s/%s/pulls/%d.%s", owner, repo, index, kind), nil)
|
url := fmt.Sprintf("/%s/%s/pulls/%d.%s?%s", owner, repo, index, kind, opts.QueryEncode())
|
||||||
|
return c.getWebResponse("GET", url, nil)
|
||||||
}
|
}
|
||||||
return c.getResponse("GET", fmt.Sprintf("/repos/%s/%s/pulls/%d.%s", owner, repo, index, kind), nil, nil)
|
return c.getResponse("GET", fmt.Sprintf("/repos/%s/%s/pulls/%d.%s", owner, repo, index, kind), nil, nil)
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetPullRequestPatch gets the .patch file as bytes for a PR
|
// GetPullRequestPatch gets the git patchset of a PR
|
||||||
func (c *Client) GetPullRequestPatch(owner, repo string, index int64) ([]byte, *Response, error) {
|
func (c *Client) GetPullRequestPatch(owner, repo string, index int64) ([]byte, *Response, error) {
|
||||||
return c.getPullRequestDiffOrPatch(owner, repo, "patch", index)
|
return c.getPullRequestDiffOrPatch(owner, repo, pullRequestDiffTypePatch, index, PullRequestDiffOptions{})
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetPullRequestDiff gets the .diff file as bytes for a PR
|
// GetPullRequestDiff gets the diff of a PR. For Gitea >= 1.16, you must set includeBinary to get an applicable diff
|
||||||
func (c *Client) GetPullRequestDiff(owner, repo string, index int64) ([]byte, *Response, error) {
|
func (c *Client) GetPullRequestDiff(owner, repo string, index int64, opts PullRequestDiffOptions) ([]byte, *Response, error) {
|
||||||
return c.getPullRequestDiffOrPatch(owner, repo, "diff", index)
|
return c.getPullRequestDiffOrPatch(owner, repo, pullRequestDiffTypeDiff, index, opts)
|
||||||
}
|
}
|
||||||
|
|
||||||
// ListPullRequestCommitsOptions options for listing pull requests
|
// ListPullRequestCommitsOptions options for listing pull requests
|
||||||
|
|
|
@ -56,7 +56,9 @@ func TestPull(t *testing.T) {
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
assert.Len(t, pulls, 3)
|
assert.Len(t, pulls, 3)
|
||||||
|
|
||||||
diff, _, err := c.GetPullRequestDiff(c.username, repoName, pullUpdateFile.Index)
|
diff, _, err := c.GetPullRequestDiff(c.username, repoName, pullUpdateFile.Index, PullRequestDiffOptions{
|
||||||
|
Binary: true,
|
||||||
|
})
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
assert.True(t, len(diff) > 1100 && len(diff) < 1300)
|
assert.True(t, len(diff) > 1100 && len(diff) < 1300)
|
||||||
patch, _, err := c.GetPullRequestPatch(c.username, repoName, pullUpdateFile.Index)
|
patch, _, err := c.GetPullRequestPatch(c.username, repoName, pullUpdateFile.Index)
|
||||||
|
|
Loading…
Reference in a new issue