(
limit int,
api func(opts ...management.RequestOption) (result []interface{}, hasNext bool, err error),
)
| 855 | } |
| 856 | |
| 857 | func getWithPagination( |
| 858 | limit int, |
| 859 | api func(opts ...management.RequestOption) (result []interface{}, hasNext bool, err error), |
| 860 | ) ([]interface{}, error) { |
| 861 | var list []interface{} |
| 862 | if err := ansi.Waiting(func() error { |
| 863 | pageSize := defaultPageSize |
| 864 | page := 0 |
| 865 | for { |
| 866 | if limit > 0 { |
| 867 | // Determine page size to avoid getting unwanted elements. |
| 868 | want := limit - len(list) |
| 869 | if want == 0 { |
| 870 | return nil |
| 871 | } |
| 872 | if want < defaultPageSize { |
| 873 | pageSize = want |
| 874 | } else { |
| 875 | pageSize = defaultPageSize |
| 876 | } |
| 877 | } |
| 878 | res, hasNext, err := api( |
| 879 | management.PerPage(pageSize), |
| 880 | management.Page(page)) |
| 881 | if err != nil { |
| 882 | return err |
| 883 | } |
| 884 | page++ |
| 885 | list = append(list, res...) |
| 886 | if len(list) == limit || !hasNext { |
| 887 | return nil |
| 888 | } |
| 889 | } |
| 890 | }); err != nil { |
| 891 | return nil, err |
| 892 | } |
| 893 | return list, nil |
| 894 | } |
| 895 | |
| 896 | func (c *cli) getOrgMembers( |
| 897 | context context.Context, |
no test coverage detected