[ARVADOS-DEV] updated: b6fdd9810edd6535f0aa7624ce7341dc3e4c2358
Git user
git at public.arvados.org
Thu Mar 10 18:12:53 UTC 2022
Summary of changes:
lib/redmine/issues.go | 45 ++++++++++++++++++++++++++++-----------------
lib/redmine/redmine.go | 1 +
2 files changed, 29 insertions(+), 17 deletions(-)
via b6fdd9810edd6535f0aa7624ce7341dc3e4c2358 (commit)
from ef344314e315246e1da4d9889bb9bc51ef962ce5 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
commit b6fdd9810edd6535f0aa7624ce7341dc3e4c2358
Author: Ward Vandewege <ward at curii.com>
Date: Thu Mar 10 13:11:26 2022 -0500
A few bugfixes in the redmine library: fix the version filter for
issues, handle pagination in the FilteredIssues function.
refs #18813
Arvados-DCO-1.1-Signed-off-by: Ward Vandewege <ward at curii.com>
diff --git a/lib/redmine/issues.go b/lib/redmine/issues.go
index 90c8c42..7b6e5fe 100644
--- a/lib/redmine/issues.go
+++ b/lib/redmine/issues.go
@@ -86,32 +86,43 @@ func issueFilters(issueFilter *IssueFilter) []string {
filterParameters = append(filterParameters, fmt.Sprintf("subject=~%v", issueFilter.Subject))
}
if len(issueFilter.VersionID) > 0 {
- filterParameters = append(filterParameters, fmt.Sprintf("fixed_version=~%v", issueFilter.VersionID))
- }
-
- if len(filterParameters) > 0 {
- return filterParameters[1:]
+ filterParameters = append(filterParameters, fmt.Sprintf("fixed_version_id=%v", issueFilter.VersionID))
}
return filterParameters
}
// FilteredIssues returns a slice of issues that matches the f criteria
+// This function handles pagination internally, so it could return a lot
+// of results at once.
func (c *Client) FilteredIssues(f *IssueFilter) ([]Issue, error) {
s := issueFilters(f)
- res, err := c.Get("/issues.json?" + strings.Join(s, "&"))
- if err != nil {
- return nil, err
- }
- defer res.Body.Close()
-
- var r issuesResult
- err = responseHelper(res, &r, 200)
- if err != nil {
- return nil, err
- }
- return r.Issues, nil
+ var issues []Issue
+ var offset int
+ // Get 100 results at once (the default is 25)
+ limit := 100
+ for {
+ parameters := append(s, fmt.Sprintf("offset=%d", offset), fmt.Sprintf("limit=%d", limit))
+ res, err := c.Get("/issues.json?" + strings.Join(parameters, "&"))
+ if err != nil {
+ return nil, err
+ }
+ defer res.Body.Close()
+
+ var r issuesResult
+ err = responseHelper(res, &r, 200)
+ if err != nil {
+ return nil, err
+ }
+ issues = append(issues, r.Issues...)
+ if r.Offset+uint(len(r.Issues)) >= r.TotalCount {
+ break
+ }
+ offset += limit
+ }
+
+ return issues, nil
}
// CreateIssue creates a redmine issue
diff --git a/lib/redmine/redmine.go b/lib/redmine/redmine.go
index 70a93f4..b5f981f 100644
--- a/lib/redmine/redmine.go
+++ b/lib/redmine/redmine.go
@@ -95,5 +95,6 @@ func responseHelper(res *http.Response, r interface{}, okCode int) error {
// When r is nil, the API call is not expected to return a result (empty res.Body)
err = decoder.Decode(&r)
}
+ //fmt.Printf("***\nRAW RESPONSE: %+v\n***\n", r)
return err
}
-----------------------------------------------------------------------
hooks/post-receive
--
More information about the arvados-commits
mailing list