pkg/ghclient/core.go
func (c *Client) depaginate(action string, opts *github.ListOptions, call func() ([]interface{}, *github.Response, error)) ([]interface{}, error) {
	var allItems []interface{}
	wrapper := func() (*github.Response, error) {
		items, resp, err := call()
		if err == nil {
			allItems = append(allItems, items...)
		}
		return resp, err
	}

	opts.Page = 1
	opts.PerPage = 100
	lastPage := 1
	for ; opts.Page <= lastPage; opts.Page++ {
		resp, err := c.retry(action, wrapper)
		if err != nil {
			return allItems, fmt.Errorf("error while depaginating page %d/%d: %v", opts.Page, lastPage, err)
		}
		if resp.LastPage > 0 {
			lastPage = resp.LastPage
		}
	}
	return allItems, nil
}
func (c *Client) depaginate(action string, opts *github.ListOptions, call func() ([]interface{}, *github.Response, error)) ([]interface{}, error) {
	var allItems []interface{}
	wrapper := func() (*github.Response, error) {
		items, resp, err := call()
		if err == nil {
			allItems = append(allItems, items...)
		}
		return resp, err
	}

	opts.Page = 1
	opts.PerPage = 100
	lastPage := 1
	for ; opts.Page <= lastPage; opts.Page++ {
		resp, err := c.retry(action, wrapper)
		if err != nil {
			return allItems, fmt.Errorf("error while depaginating page %d/%d: %v", opts.Page, lastPage, err)
		}
		if resp.LastPage > 0 {
			lastPage = resp.LastPage
		}
	}
	return allItems, nil
}
func ( c * Client ) depaginate ( action string , opts * github . ListOptions , call func ( ) ( [ ] interface { } , * github . Response , error ) ) ( [ ] interface { } , error ) { var allItems [ ] interface { } wrapper := func ( ) ( * github . Response , error ) { items , resp , err := call ( ) if err == nil { allItems = append ( allItems , items ... ) } return resp , err } opts . Page = 1 opts . PerPage = 100 lastPage := 1 for ; opts . Page <= lastPage ; opts . Page ++ { resp , err := c . retry ( action , wrapper ) if err != nil { return allItems , fmt . Errorf ( " " , opts . Page , lastPage , err ) } if resp . LastPage > 0 { lastPage = resp . LastPage } } return allItems , nil }
// depaginate adds depagination on top of the retry and rate limiting logic provided by retry.
depaginate adds depagination on top of the retry and rate limiting logic provided by retry .