Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fixes more Paginations loops with value not being reset, and wrong value cloud be returned #1493

Closed
wants to merge 5 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .changelog/1493.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
```release-note:bug
access_application,access_ca_certificate,access_group,access_identity_provider,access_mutual_tls_certificates,access_policyaccess_users,account_roles,d1pages_deployment,tunnel,turnstile,: All this endpoints are susceptible to returning wrong data due to the Struct not getting reset for every loop.
```
6 changes: 4 additions & 2 deletions access_application.go
Original file line number Diff line number Diff line change
Expand Up @@ -239,7 +239,7 @@ func (api *API) ListAccessApplications(ctx context.Context, rc *ResourceContaine
}

var applications []AccessApplication
var r AccessApplicationListResponse
var lastResultInfo *ResultInfo = nil

for {
uri := buildURI(baseURL, params)
Expand All @@ -248,19 +248,21 @@ func (api *API) ListAccessApplications(ctx context.Context, rc *ResourceContaine
if err != nil {
return []AccessApplication{}, &ResultInfo{}, fmt.Errorf("%s: %w", errMakeRequestError, err)
}
var r AccessApplicationListResponse

err = json.Unmarshal(res, &r)
if err != nil {
return []AccessApplication{}, &ResultInfo{}, fmt.Errorf("%s: %w", errUnmarshalError, err)
}
lastResultInfo = &r.ResultInfo
applications = append(applications, r.Result...)
params.ResultInfo = r.ResultInfo.Next()
if params.ResultInfo.Done() || !autoPaginate {
break
}
}

return applications, &r.ResultInfo, nil
return applications, lastResultInfo, nil
}

// GetAccessApplication returns a single application based on the application
Expand Down
6 changes: 4 additions & 2 deletions access_ca_certificate.go
Original file line number Diff line number Diff line change
Expand Up @@ -60,27 +60,29 @@ func (api *API) ListAccessCACertificates(ctx context.Context, rc *ResourceContai
}

var accessCACertificates []AccessCACertificate
var r AccessCACertificateListResponse
var lastResultInfo *ResultInfo = nil

for {
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)
}
var r AccessCACertificateListResponse

err = json.Unmarshal(res, &r)
if err != nil {
return []AccessCACertificate{}, &ResultInfo{}, fmt.Errorf("%s: %w", errUnmarshalError, err)
}
lastResultInfo = &r.ResultInfo
accessCACertificates = append(accessCACertificates, r.Result...)
params.ResultInfo = r.ResultInfo.Next()
if params.ResultInfo.Done() || !autoPaginate {
break
}
}

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

// GetAccessCACertificate returns a single CA certificate associated within
Expand Down
6 changes: 4 additions & 2 deletions access_group.go
Original file line number Diff line number Diff line change
Expand Up @@ -280,27 +280,29 @@ func (api *API) ListAccessGroups(ctx context.Context, rc *ResourceContainer, par
}

var accessGroups []AccessGroup
var r AccessGroupListResponse
var lastResultInfo *ResultInfo = nil

for {
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)
}
var r AccessGroupListResponse

err = json.Unmarshal(res, &r)
if err != nil {
return []AccessGroup{}, &ResultInfo{}, fmt.Errorf("%s: %w", errUnmarshalError, err)
}
lastResultInfo = &r.ResultInfo
accessGroups = append(accessGroups, r.Result...)
params.ResultInfo = r.ResultInfo.Next()
if params.ResultInfo.Done() || !autoPaginate {
break
}
}

return accessGroups, &r.ResultInfo, nil
return accessGroups, lastResultInfo, nil
}

// GetAccessGroup returns a single group based on the group ID.
Expand Down
6 changes: 4 additions & 2 deletions access_identity_provider.go
Original file line number Diff line number Diff line change
Expand Up @@ -132,19 +132,21 @@ func (api *API) ListAccessIdentityProviders(ctx context.Context, rc *ResourceCon
}

var accessProviders []AccessIdentityProvider
var r AccessIdentityProvidersListResponse
var lastResultInfo *ResultInfo = nil

for {
uri := buildURI(baseURL, params)
res, err := api.makeRequestContext(ctx, http.MethodGet, uri, nil)
if err != nil {
return []AccessIdentityProvider{}, &ResultInfo{}, fmt.Errorf("%s: %w", errMakeRequestError, err)
}
var r AccessIdentityProvidersListResponse

err = json.Unmarshal(res, &r)
if err != nil {
return []AccessIdentityProvider{}, &ResultInfo{}, fmt.Errorf("%s: %w", errUnmarshalError, err)
}
lastResultInfo = &r.ResultInfo

accessProviders = append(accessProviders, r.Result...)
params.ResultInfo = r.ResultInfo.Next()
Expand All @@ -153,7 +155,7 @@ func (api *API) ListAccessIdentityProviders(ctx context.Context, rc *ResourceCon
}
}

return accessProviders, &r.ResultInfo, nil
return accessProviders, lastResultInfo, nil
}

// GetAccessIdentityProvider returns a single Access Identity
Expand Down
6 changes: 4 additions & 2 deletions access_mutual_tls_certificates.go
Original file line number Diff line number Diff line change
Expand Up @@ -83,27 +83,29 @@ func (api *API) ListAccessMutualTLSCertificates(ctx context.Context, rc *Resourc
}

var accessCertificates []AccessMutualTLSCertificate
var r AccessMutualTLSCertificateListResponse
var lastResultInfo *ResultInfo = nil

for {
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)
}
var r AccessMutualTLSCertificateListResponse

err = json.Unmarshal(res, &r)
if err != nil {
return []AccessMutualTLSCertificate{}, &ResultInfo{}, fmt.Errorf("%s: %w", errUnmarshalError, err)
}
lastResultInfo = &r.ResultInfo
accessCertificates = append(accessCertificates, r.Result...)
params.ResultInfo = r.ResultInfo.Next()
if params.ResultInfo.Done() || !autoPaginate {
break
}
}

return accessCertificates, &r.ResultInfo, nil
return accessCertificates, lastResultInfo, nil
}

// GetAccessMutualTLSCertificate returns a single Access Mutual TLS
Expand Down
6 changes: 4 additions & 2 deletions access_policy.go
Original file line number Diff line number Diff line change
Expand Up @@ -167,26 +167,28 @@ func (api *API) ListAccessPolicies(ctx context.Context, rc *ResourceContainer, p
}

var accessPolicies []AccessPolicy
var r AccessPolicyListResponse
var lastResultInfo *ResultInfo = nil
for {
uri := buildURI(baseURL, params)
res, err := api.makeRequestContext(ctx, http.MethodGet, uri, nil)
if err != nil {
return []AccessPolicy{}, &ResultInfo{}, fmt.Errorf("%s: %w", errMakeRequestError, err)
}
var r AccessPolicyListResponse

err = json.Unmarshal(res, &r)
if err != nil {
return []AccessPolicy{}, &ResultInfo{}, fmt.Errorf("%s: %w", errUnmarshalError, err)
}
lastResultInfo = &r.ResultInfo
accessPolicies = append(accessPolicies, r.Result...)
params.ResultInfo = r.ResultInfo.Next()
if params.ResultInfo.Done() || !autoPaginate {
break
}
}

return accessPolicies, &r.ResultInfo, nil
return accessPolicies, lastResultInfo, nil
}

// GetAccessPolicy returns a single policy based on the policy ID.
Expand Down
6 changes: 3 additions & 3 deletions access_users.go
Original file line number Diff line number Diff line change
Expand Up @@ -223,7 +223,7 @@ func (api *API) ListAccessUsers(ctx context.Context, rc *ResourceContainer, para
}

var accessUsers []AccessUser
var resultInfo *ResultInfo = nil
var lastResultInfo *ResultInfo = nil

for {
uri := buildURI(baseURL, params)
Expand All @@ -232,20 +232,20 @@ func (api *API) ListAccessUsers(ctx context.Context, rc *ResourceContainer, para
return []AccessUser{}, &ResultInfo{}, fmt.Errorf("%s: %w", errMakeRequestError, err)
}
var r AccessUserListResponse
resultInfo = &r.ResultInfo

err = json.Unmarshal(res, &r)
if err != nil {
return []AccessUser{}, &ResultInfo{}, fmt.Errorf("%s: %w", errUnmarshalError, err)
}
lastResultInfo = &r.ResultInfo
accessUsers = append(accessUsers, r.Result...)
params.ResultInfo = r.ResultInfo.Next()
if params.ResultInfo.Done() || !autoPaginate {
break
}
}

return accessUsers, resultInfo, nil
return accessUsers, lastResultInfo, nil
}

// GetAccessUserActiveSessions returns a list of active sessions for an user.
Expand Down
2 changes: 1 addition & 1 deletion account_roles.go
Original file line number Diff line number Diff line change
Expand Up @@ -64,14 +64,14 @@ func (api *API) ListAccountRoles(ctx context.Context, rc *ResourceContainer, par
params.Page = 1
}
var roles []AccountRole
var r AccountRolesListResponse
for {
uri := buildURI(fmt.Sprintf("/accounts/%s/roles", rc.Identifier), params)

res, err := api.makeRequestContext(ctx, http.MethodGet, uri, nil)
if err != nil {
return []AccountRole{}, err
}
var r AccountRolesListResponse

err = json.Unmarshal(res, &r)
if err != nil {
Expand Down
6 changes: 4 additions & 2 deletions d1.go
Original file line number Diff line number Diff line change
Expand Up @@ -90,25 +90,27 @@ func (api *API) ListD1Databases(ctx context.Context, rc *ResourceContainer, para
params.Page = 1
}
var databases []D1Database
var r ListD1Response
var lastResultInfo *ResultInfo = nil
for {
uri := buildURI(baseURL, params)
res, err := api.makeRequestContext(ctx, http.MethodGet, uri, nil)
if err != nil {
return []D1Database{}, &ResultInfo{}, fmt.Errorf("%s: %w", errMakeRequestError, err)
}
var r ListD1Response

err = json.Unmarshal(res, &r)
if err != nil {
return []D1Database{}, &ResultInfo{}, fmt.Errorf("%s: %w", errUnmarshalError, err)
}
lastResultInfo = &r.ResultInfo
databases = append(databases, r.Result...)
params.ResultInfo = r.ResultInfo.Next()
if params.ResultInfo.Done() || !autoPaginate {
break
}
}
return databases, &r.ResultInfo, nil
return databases, lastResultInfo, nil
}

// CreateD1Database creates a new database for an account.
Expand Down
6 changes: 4 additions & 2 deletions pages_deployment.go
Original file line number Diff line number Diff line change
Expand Up @@ -147,25 +147,27 @@ func (api *API) ListPagesDeployments(ctx context.Context, rc *ResourceContainer,
}

var deployments []PagesProjectDeployment
var r pagesDeploymentListResponse
var lastResultInfo *ResultInfo = nil

for {
uri := buildURI(fmt.Sprintf("/accounts/%s/pages/projects/%s/deployments", rc.Identifier, params.ProjectName), params)
res, err := api.makeRequestContext(ctx, http.MethodGet, uri, nil)
if err != nil {
return []PagesProjectDeployment{}, &ResultInfo{}, err
}
var r pagesDeploymentListResponse
err = json.Unmarshal(res, &r)
if err != nil {
return []PagesProjectDeployment{}, &ResultInfo{}, fmt.Errorf("%s: %w", errUnmarshalError, err)
}
lastResultInfo = &r.ResultInfo
deployments = append(deployments, r.Result...)
params.ResultInfo = r.ResultInfo.Next()
if params.Done() || !autoPaginate {
break
}
}
return deployments, &r.ResultInfo, nil
return deployments, lastResultInfo, nil
}

// GetPagesDeploymentInfo returns a deployment for a Pages project.
Expand Down
6 changes: 4 additions & 2 deletions tunnel.go
Original file line number Diff line number Diff line change
Expand Up @@ -249,7 +249,7 @@ func (api *API) ListTunnels(ctx context.Context, rc *ResourceContainer, params T
}

var records []Tunnel
var listResponse TunnelsDetailResponse
var lastResultInfo *ResultInfo = nil

for {
uri := buildURI(fmt.Sprintf("/accounts/%s/cfd_tunnel", rc.Identifier), params)
Expand All @@ -258,10 +258,12 @@ func (api *API) ListTunnels(ctx context.Context, rc *ResourceContainer, params T
return []Tunnel{}, &ResultInfo{}, err
}

var listResponse TunnelsDetailResponse
err = json.Unmarshal(res, &listResponse)
if err != nil {
return []Tunnel{}, &ResultInfo{}, fmt.Errorf("%s: %w", errUnmarshalError, err)
}
lastResultInfo = &listResponse.ResultInfo

records = append(records, listResponse.Result...)
params.ResultInfo = listResponse.ResultInfo.Next()
Expand All @@ -270,7 +272,7 @@ func (api *API) ListTunnels(ctx context.Context, rc *ResourceContainer, params T
}
}

return records, &listResponse.ResultInfo, nil
return records, lastResultInfo, nil
}

// GetTunnel returns a single Argo tunnel.
Expand Down
6 changes: 4 additions & 2 deletions turnstile.go
Original file line number Diff line number Diff line change
Expand Up @@ -110,18 +110,20 @@ func (api *API) ListTurnstileWidgets(ctx context.Context, rc *ResourceContainer,
}

var widgets []TurnstileWidget
var r ListTurnstileWidgetResponse
var lastResultInfo *ResultInfo = nil
for {
uri := buildURI(fmt.Sprintf("/accounts/%s/challenges/widgets", rc.Identifier), params)
res, err := api.makeRequestContext(ctx, http.MethodGet, uri, nil)

if err != nil {
return []TurnstileWidget{}, &ResultInfo{}, fmt.Errorf("%s: %w", errMakeRequestError, err)
}
var r ListTurnstileWidgetResponse
err = json.Unmarshal(res, &r)
if err != nil {
return []TurnstileWidget{}, &ResultInfo{}, fmt.Errorf("%s: %w", errUnmarshalError, err)
}
lastResultInfo = &r.ResultInfo

widgets = append(widgets, r.Result...)
params.ResultInfo = r.ResultInfo.Next()
Expand All @@ -130,7 +132,7 @@ func (api *API) ListTurnstileWidgets(ctx context.Context, rc *ResourceContainer,
}
}

return widgets, &r.ResultInfo, nil
return widgets, lastResultInfo, nil
}

// GetTurnstileWidget shows a single challenge widget configuration.
Expand Down
Loading