From 18ff9e6a0d62b189fc209a18c3965a412cbc34e7 Mon Sep 17 00:00:00 2001 From: 6543 <6543@noreply.gitea.io> Date: Tue, 22 Sep 2020 21:38:11 +0000 Subject: [PATCH] Update Gitea SDK to v0.13.0 (#49) adapt new functions update sdk to v0.13.0 Co-authored-by: 6543 <6543@obermui.de> Reviewed-on: https://gitea.com/gitea/changelog/pulls/49 Reviewed-by: Lunny Xiao Reviewed-by: jaqra --- go.mod | 2 +- go.sum | 4 +-- service/gitea.go | 64 +++++++++++++++++++++++------------------------- 3 files changed, 33 insertions(+), 37 deletions(-) diff --git a/go.mod b/go.mod index 54a9597..4d04054 100644 --- a/go.mod +++ b/go.mod @@ -3,7 +3,7 @@ module code.gitea.io/changelog go 1.13 require ( - code.gitea.io/sdk/gitea v0.12.1 + code.gitea.io/sdk/gitea v0.13.0 github.com/cpuguy83/go-md2man/v2 v2.0.0 // indirect github.com/google/go-github/v32 v32.1.0 github.com/hashicorp/go-version v1.2.1 // indirect diff --git a/go.sum b/go.sum index 8ae3565..42ff048 100644 --- a/go.sum +++ b/go.sum @@ -1,5 +1,5 @@ -code.gitea.io/sdk/gitea v0.12.1 h1:bMgjEqPnNX/i6TpVwXwpjJtFOnUSuC9P6yy/jjy8sjY= -code.gitea.io/sdk/gitea v0.12.1/go.mod h1:z3uwDV/b9Ls47NGukYM9XhnHtqPh/J+t40lsUrR6JDY= +code.gitea.io/sdk/gitea v0.13.0 h1:iHognp8ZMhMFLooUUNZFpm8IHaC9qoHJDvAE5vTm5aw= +code.gitea.io/sdk/gitea v0.13.0/go.mod h1:z3uwDV/b9Ls47NGukYM9XhnHtqPh/J+t40lsUrR6JDY= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/cpuguy83/go-md2man/v2 v2.0.0 h1:EoUDS0afbrsXAZ9YQ9jdu/mZ2sXgT1/2yyNng4PGlyM= diff --git a/service/gitea.go b/service/gitea.go index ba2035e..c7c03fd 100644 --- a/service/gitea.go +++ b/service/gitea.go @@ -23,11 +23,14 @@ type Gitea struct { // Generate returns a Gitea changelog func (ge *Gitea) Generate() (string, []Entry, error) { - client := gitea.NewClient(ge.BaseURL, ge.Token) + client, err := gitea.NewClient(ge.BaseURL, gitea.SetToken(ge.Token)) + if err != nil { + return "", nil, err + } entries := make([]Entry, 0) - milestoneID, err := ge.milestoneID(client) + milestone, _, err := client.GetMilestoneByName(ge.Owner, ge.Repo, ge.Milestone) if err != nil { return "", nil, err } @@ -37,14 +40,10 @@ func (ge *Gitea) Generate() (string, []Entry, error) { from = "issues" } - tagURL := getGiteaTagURL(client, ge.BaseURL, ge.Owner, ge.Repo, ge.Milestone, from, milestoneID) + tagURL := getGiteaTagURL(client, ge.BaseURL, ge.Owner, ge.Repo, ge.Milestone, from, milestone.ID) - p := 1 - // https://github.com/go-gitea/gitea/blob/d92781bf941972761177ac9e07441f8893758fd3/models/repo.go#L63 - // https://github.com/go-gitea/gitea/blob/e3c3b33ea7a5a223e22688c3f0eb2d3dab9f991c/models/pull_list.go#L104 - // FIXME Gitea has this hard-coded at 40 - perPage := 40 - for { + perPage := ge.perPage(client) + for p := 1; ; p++ { options := gitea.ListIssueOption{ ListOptions: gitea.ListOptions{ Page: p, @@ -58,7 +57,7 @@ func (ge *Gitea) Generate() (string, []Entry, error) { options.Type = gitea.IssueTypeIssue } - issues, err := client.ListRepoIssues(ge.Owner, ge.Repo, options) + issues, _, err := client.ListRepoIssues(ge.Owner, ge.Repo, options) if err != nil { return "", nil, err } @@ -77,8 +76,6 @@ func (ge *Gitea) Generate() (string, []Entry, error) { if len(issues) != perPage { break } - - p++ } return tagURL, entries, nil @@ -111,30 +108,31 @@ func convertToEntry(issue gitea.Issue) Entry { // Contributors returns a list of contributors from Gitea func (ge *Gitea) Contributors() (ContributorList, error) { - client := gitea.NewClient(ge.BaseURL, ge.Token) - - contributorsMap := make(map[string]bool) - - milestoneID, err := ge.milestoneID(client) + client, err := gitea.NewClient(ge.BaseURL, gitea.SetToken(ge.Token)) if err != nil { return nil, err } - p := 1 - perPage := 100 - for { - results, err := client.ListRepoPullRequests(ge.Owner, ge.Repo, gitea.ListPullRequestsOptions{ + contributorsMap := make(map[string]bool) + + milestone, _, err := client.GetMilestoneByName(ge.Owner, ge.Repo, ge.Milestone) + if err != nil { + return nil, err + } + + perPage := ge.perPage(client) + for p := 1; ; p++ { + results, _, err := client.ListRepoPullRequests(ge.Owner, ge.Repo, gitea.ListPullRequestsOptions{ ListOptions: gitea.ListOptions{ Page: p, PageSize: perPage, }, State: "closed", - Milestone: milestoneID, + Milestone: milestone.ID, }) if err != nil { return nil, err } - p++ for _, pr := range results { if pr != nil && pr.HasMerged { @@ -158,17 +156,15 @@ func (ge *Gitea) Contributors() (ContributorList, error) { return contributors, nil } -func (ge *Gitea) milestoneID(client *gitea.Client) (int64, error) { - milestones, err := client.ListRepoMilestones(ge.Owner, ge.Repo, gitea.ListMilestoneOption{State: gitea.StateAll}) - if err != nil { - return 0, err - } - - for _, ms := range milestones { - if ms.Title == ge.Milestone { - return ms.ID, nil +func (ge *Gitea) perPage(client *gitea.Client) int { + // set low value so it will work in most cases + perPage := 10 + if client.CheckServerVersionConstraint(">=1.13.0") == nil { + conf, _, err := client.GetGlobalAPISettings() + if err != nil { + return perPage } + return conf.MaxResponseItems } - - return 0, fmt.Errorf("no milestone found for %s", ge.Milestone) + return perPage }