From e6f6d8a0a4709ed07950f84cf5100a6ce711fb79 Mon Sep 17 00:00:00 2001 From: Oleg Yudovich <38615932+oleg-yudovich@users.noreply.github.com> Date: Thu, 29 Sep 2022 13:59:02 +0300 Subject: [PATCH] [FIX] pagination fix (#163) --- cf/organizations.go | 19 ++++++++++--------- cf/service_broker.go | 19 ++++++++++--------- cf/service_offerings.go | 19 ++++++++++--------- cf/service_plans.go | 19 ++++++++++--------- 4 files changed, 40 insertions(+), 36 deletions(-) diff --git a/cf/organizations.go b/cf/organizations.go index cfa135e..0be3e08 100644 --- a/cf/organizations.go +++ b/cf/organizations.go @@ -22,15 +22,16 @@ type CCListOrganizationsResponse struct { func (pc *PlatformClient) ListOrganizationsByQuery(ctx context.Context, query url.Values) ([]CCOrganization, error) { var organizations []CCOrganization - var organizationsResponse CCListOrganizationsResponse - request := PlatformClientRequest{ - CTX: ctx, - URL: "/v3/organizations?" + query.Encode(), - Method: http.MethodGet, - ResponseBody: &organizationsResponse, - } + requestUrl := "/v3/organizations?" + query.Encode() for { + var organizationsResponse CCListOrganizationsResponse + request := PlatformClientRequest{ + CTX: ctx, + URL: requestUrl, + Method: http.MethodGet, + ResponseBody: &organizationsResponse, + } _, err := pc.MakeRequest(request) if err != nil { return []CCOrganization{}, errors.Wrap(err, "Error requesting organizations") @@ -38,8 +39,8 @@ func (pc *PlatformClient) ListOrganizationsByQuery(ctx context.Context, query ur organizations = append(organizations, organizationsResponse.Resources...) - request.URL = organizationsResponse.Pagination.Next.Href - if request.URL == "" { + requestUrl = organizationsResponse.Pagination.Next.Href + if requestUrl == "" { break } } diff --git a/cf/service_broker.go b/cf/service_broker.go index c83e5f3..f1a11e9 100644 --- a/cf/service_broker.go +++ b/cf/service_broker.go @@ -280,23 +280,24 @@ func (pc *PlatformClient) UpdateBroker(ctx context.Context, r *platform.UpdateSe func (pc *PlatformClient) ListServiceBrokersByQuery(ctx context.Context, query url.Values) ([]CCServiceBroker, error) { var serviceBrokers []CCServiceBroker - var serviceBrokersResponse CCListServiceBrokersResponse - request := PlatformClientRequest{ - CTX: ctx, - URL: "/v3/service_brokers?" + query.Encode(), - Method: http.MethodGet, - ResponseBody: &serviceBrokersResponse, - } + requestUrl := "/v3/service_brokers?" + query.Encode() for { + var serviceBrokersResponse CCListServiceBrokersResponse + request := PlatformClientRequest{ + CTX: ctx, + URL: requestUrl, + Method: http.MethodGet, + ResponseBody: &serviceBrokersResponse, + } _, err := pc.MakeRequest(request) if err != nil { return []CCServiceBroker{}, err } serviceBrokers = append(serviceBrokers, serviceBrokersResponse.Resources...) - request.URL = serviceBrokersResponse.Pagination.Next.Href - if request.URL == "" { + requestUrl = serviceBrokersResponse.Pagination.Next.Href + if requestUrl == "" { break } } diff --git a/cf/service_offerings.go b/cf/service_offerings.go index 3eb2c24..7a1c014 100644 --- a/cf/service_offerings.go +++ b/cf/service_offerings.go @@ -35,15 +35,16 @@ type CCListServiceOfferingsResponse struct { func (pc *PlatformClient) ListServiceOfferingsByQuery(ctx context.Context, query url.Values) ([]ServiceOffering, error) { var serviceOfferings []ServiceOffering - var serviceOfferingsResponse CCListServiceOfferingsResponse - request := PlatformClientRequest{ - CTX: ctx, - URL: "/v3/service_offerings?" + query.Encode(), - Method: http.MethodGet, - ResponseBody: &serviceOfferingsResponse, - } + requestUrl := "/v3/service_offerings?" + query.Encode() for { + var serviceOfferingsResponse CCListServiceOfferingsResponse + request := PlatformClientRequest{ + CTX: ctx, + URL: requestUrl, + Method: http.MethodGet, + ResponseBody: &serviceOfferingsResponse, + } _, err := pc.MakeRequest(request) if err != nil { return []ServiceOffering{}, errors.Wrap(err, "Error requesting service offerings") @@ -57,8 +58,8 @@ func (pc *PlatformClient) ListServiceOfferingsByQuery(ctx context.Context, query }) } - request.URL = serviceOfferingsResponse.Pagination.Next.Href - if request.URL == "" { + requestUrl = serviceOfferingsResponse.Pagination.Next.Href + if requestUrl == "" { break } } diff --git a/cf/service_plans.go b/cf/service_plans.go index 4222e9b..2d0c7b6 100644 --- a/cf/service_plans.go +++ b/cf/service_plans.go @@ -44,15 +44,16 @@ type CCListServicePlansResponse struct { func (pc *PlatformClient) ListServicePlansByQuery(ctx context.Context, query url.Values) ([]ServicePlan, error) { var servicePlans []ServicePlan - var servicePlansResponse CCListServicePlansResponse - request := PlatformClientRequest{ - CTX: ctx, - URL: "/v3/service_plans?" + query.Encode(), - Method: http.MethodGet, - ResponseBody: &servicePlansResponse, - } + requestUrl := "/v3/service_plans?" + query.Encode() for { + var servicePlansResponse CCListServicePlansResponse + request := PlatformClientRequest{ + CTX: ctx, + URL: requestUrl, + Method: http.MethodGet, + ResponseBody: &servicePlansResponse, + } _, err := pc.MakeRequest(request) if err != nil { return []ServicePlan{}, errors.Wrap(err, "Error requesting service plans") @@ -68,8 +69,8 @@ func (pc *PlatformClient) ListServicePlansByQuery(ctx context.Context, query url }) } - request.URL = servicePlansResponse.Pagination.Next.Href - if request.URL == "" { + requestUrl = servicePlansResponse.Pagination.Next.Href + if requestUrl == "" { break } }