Skip to content

Commit

Permalink
fix pagination handling
Browse files Browse the repository at this point in the history
  • Loading branch information
jacobbednarz committed Jun 26, 2023
1 parent 0ca81ca commit 1e579b5
Show file tree
Hide file tree
Showing 5 changed files with 19 additions and 38 deletions.
14 changes: 5 additions & 9 deletions access_application.go
Original file line number Diff line number Diff line change
Expand Up @@ -113,7 +113,7 @@ type SaasApplication struct {
}

type ListAccessApplicationsParams struct {
PaginationOptions
ResultInfo
}

type CreateAccessApplicationParams struct {
Expand Down Expand Up @@ -187,15 +187,11 @@ func (api *API) ListAccessApplications(ctx context.Context, rc *ResourceContaine
params.Page = 1
}

resultInfo := ResultInfo{
Page: params.Page,
PerPage: params.PerPage,
}

var applications []AccessApplication
var r AccessApplicationListResponse

for {
uri := buildURI(baseURL, resultInfo)
uri := buildURI(baseURL, params)

res, err := api.makeRequestContext(ctx, http.MethodGet, uri, nil)
if err != nil {
Expand All @@ -207,8 +203,8 @@ func (api *API) ListAccessApplications(ctx context.Context, rc *ResourceContaine
return []AccessApplication{}, &ResultInfo{}, fmt.Errorf("%s: %w", errUnmarshalError, err)
}
applications = append(applications, r.Result...)
resultInfo = r.ResultInfo.Next()
if resultInfo.Done() || autoPaginate {
params.ResultInfo = r.ResultInfo.Next()
if params.ResultInfo.Done() || autoPaginate {
break
}
}
Expand Down
15 changes: 5 additions & 10 deletions access_ca_certificate.go
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ type AccessCACertificateResponse struct {
}

type ListAccessCACertificatesParams struct {
PaginationOptions
ResultInfo
}

type CreateAccessCACertificateParams struct {
Expand All @@ -58,16 +58,11 @@ func (api *API) ListAccessCACertificates(ctx context.Context, rc *ResourceContai
params.Page = 1
}

resultInfo := ResultInfo{
Page: params.Page,
PerPage: params.PerPage,
}

var accessCACertificates []AccessCACertificate
var r AccessCACertificateListResponse

for {
uri := buildURI(baseURL, resultInfo)
uri := buildURI(baseURL, params)
res, err := api.makeRequestContext(ctx, http.MethodGet, uri, nil)
if err != nil {
return []AccessCACertificate{}, &ResultInfo{}, fmt.Errorf("%s: %w", errMakeRequestError, err)
Expand All @@ -78,13 +73,13 @@ func (api *API) ListAccessCACertificates(ctx context.Context, rc *ResourceContai
return []AccessCACertificate{}, &ResultInfo{}, fmt.Errorf("%s: %w", errUnmarshalError, err)
}
accessCACertificates = append(accessCACertificates, r.Result...)
resultInfo = r.ResultInfo.Next()
if resultInfo.Done() || autoPaginate {
params.ResultInfo = r.ResultInfo.Next()
if params.ResultInfo.Done() || autoPaginate {
break
}
}

return accessCACertificates, &resultInfo, nil
return accessCACertificates, &r.ResultInfo, nil
}

// GetAccessCACertificate returns a single CA certificate associated within
Expand Down
13 changes: 4 additions & 9 deletions access_group.go
Original file line number Diff line number Diff line change
Expand Up @@ -204,7 +204,7 @@ type AccessGroupDetailResponse struct {
}

type ListAccessGroupsParams struct {
PaginationOptions
ResultInfo
}

type CreateAccessGroupParams struct {
Expand Down Expand Up @@ -260,16 +260,11 @@ func (api *API) ListAccessGroups(ctx context.Context, rc *ResourceContainer, par
params.Page = 1
}

resultInfo := ResultInfo{
Page: params.Page,
PerPage: params.PerPage,
}

var accessGroups []AccessGroup
var r AccessGroupListResponse

for {
uri := buildURI(baseURL, resultInfo)
uri := buildURI(baseURL, params)
res, err := api.makeRequestContext(ctx, http.MethodGet, uri, nil)
if err != nil {
return []AccessGroup{}, &ResultInfo{}, fmt.Errorf("%s: %w", errMakeRequestError, err)
Expand All @@ -280,8 +275,8 @@ func (api *API) ListAccessGroups(ctx context.Context, rc *ResourceContainer, par
return []AccessGroup{}, &ResultInfo{}, fmt.Errorf("%s: %w", errUnmarshalError, err)
}
accessGroups = append(accessGroups, r.Result...)
resultInfo = r.ResultInfo.Next()
if resultInfo.Done() || autoPaginate {
params.ResultInfo = r.ResultInfo.Next()
if params.ResultInfo.Done() || autoPaginate {
break
}
}
Expand Down
4 changes: 2 additions & 2 deletions access_group_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -91,15 +91,15 @@ func TestAccessGroups(t *testing.T) {

mux.HandleFunc("/accounts/"+testAccountID+"/access/groups", handler)

actual, _, err := client.ListAccessGroups(context.Background(), testAccountRC, ListAccessGroupsParams{PaginationOptions{}})
actual, _, err := client.ListAccessGroups(context.Background(), testAccountRC, ListAccessGroupsParams{ResultInfo{}})

if assert.NoError(t, err) {
assert.Equal(t, []AccessGroup{expectedAccessGroup}, actual)
}

mux.HandleFunc("/zones/"+testZoneID+"/access/groups", handler)

actual, _, err = client.ListAccessGroups(context.Background(), testZoneRC, ListAccessGroupsParams{PaginationOptions{}})
actual, _, err = client.ListAccessGroups(context.Background(), testZoneRC, ListAccessGroupsParams{ResultInfo{}})

if assert.NoError(t, err) {
assert.Equal(t, []AccessGroup{expectedAccessGroup}, actual)
Expand Down
11 changes: 3 additions & 8 deletions access_mutual_tls_certificates.go
Original file line number Diff line number Diff line change
Expand Up @@ -81,16 +81,11 @@ func (api *API) ListAccessMutualTLSCertificates(ctx context.Context, rc *Resourc
params.Page = 1
}

resultInfo := ResultInfo{
Page: params.Page,
PerPage: params.PerPage,
}

var accessCertificates []AccessMutualTLSCertificate
var r AccessMutualTLSCertificateListResponse

for {
uri := buildURI(baseURL, resultInfo)
uri := buildURI(baseURL, params)
res, err := api.makeRequestContext(ctx, http.MethodGet, uri, nil)
if err != nil {
return []AccessMutualTLSCertificate{}, &ResultInfo{}, fmt.Errorf("%s: %w", errMakeRequestError, err)
Expand All @@ -101,8 +96,8 @@ func (api *API) ListAccessMutualTLSCertificates(ctx context.Context, rc *Resourc
return []AccessMutualTLSCertificate{}, &ResultInfo{}, fmt.Errorf("%s: %w", errUnmarshalError, err)
}
accessCertificates = append(accessCertificates, r.Result...)
resultInfo = r.ResultInfo.Next()
if resultInfo.Done() || autoPaginate {
params.ResultInfo = r.ResultInfo.Next()
if params.ResultInfo.Done() || autoPaginate {
break
}
}
Expand Down

0 comments on commit 1e579b5

Please sign in to comment.