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
|
||||
|
||||
v0.15.0 introduces a number of api changes, through which it should not be difficult to migrate.
|
||||
Just follow this guid and if you still encounter problems, ask for help on discord or feel free to create an issue.
|
||||
v0.15.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 -->
|
||||
|
||||
|
|
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
|
||||
}
|
||||
|
||||
// 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
|
||||
func (c *Client) getPullRequestDiffOrPatch(owner, repo, kind string, index int64) ([]byte, *Response, error) {
|
||||
if err := escapeValidatePathSegments(&owner, &repo, &kind); err != nil {
|
||||
func (c *Client) getPullRequestDiffOrPatch(owner, repo string, kind pullRequestDiffType, index int64, opts PullRequestDiffOptions) ([]byte, *Response, error) {
|
||||
if err := escapeValidatePathSegments(&owner, &repo); err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
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 {
|
||||
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)
|
||||
}
|
||||
|
||||
// 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) {
|
||||
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
|
||||
func (c *Client) GetPullRequestDiff(owner, repo string, index int64) ([]byte, *Response, error) {
|
||||
return c.getPullRequestDiffOrPatch(owner, repo, "diff", index)
|
||||
// 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, opts PullRequestDiffOptions) ([]byte, *Response, error) {
|
||||
return c.getPullRequestDiffOrPatch(owner, repo, pullRequestDiffTypeDiff, index, opts)
|
||||
}
|
||||
|
||||
// ListPullRequestCommitsOptions options for listing pull requests
|
||||
|
|
|
@ -56,7 +56,9 @@ func TestPull(t *testing.T) {
|
|||
assert.NoError(t, err)
|
||||
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.True(t, len(diff) > 1100 && len(diff) < 1300)
|
||||
patch, _, err := c.GetPullRequestPatch(c.username, repoName, pullUpdateFile.Index)
|
||||
|
|
Loading…
Reference in a new issue