in pkg/pricing/client/pricingapi.go [42:81]
func (papi *pricingAPI) GetProductsPricePages(ctx context.Context, filters []*Filter, pageHandler func(output *ProductsPricePage)) error {
nextURL := pricingURL
if len(filters) > 0 {
filterParams := []string{}
for _, filter := range filters {
filterParams = append(filterParams, filter.String())
}
filterParamsEscaped := url.QueryEscape(strings.Join(filterParams[:], " and "))
nextURL += fmt.Sprintf("&$filter=%s", filterParamsEscaped)
}
for nextURL != "" {
res, err := http.Get(nextURL)
if err != nil {
return err
}
if res.StatusCode != 200 {
return fmt.Errorf("got a non-200 status code: %d", res.StatusCode)
}
resBody, err := io.ReadAll(res.Body)
if err != nil {
return err
}
page := ProductsPricePage{}
err = json.Unmarshal(resBody, &page)
if err != nil {
return err
}
pageHandler(&page)
nextURL = page.NextPageLink
}
return nil
}