in image/resources/netapp-exports/volumes.go [61:120]
func (api *API) FetchNextPage(url string) (result VolumePathList, err error) {
if url == "" {
err = fmt.Errorf("url not specified")
return
}
req, err := http.NewRequest(http.MethodGet, url, nil)
if err != nil {
return
}
req.SetBasicAuth(api.User, api.Password)
response, err := api.Client.Do(req)
if err != nil {
return
}
defer response.Body.Close()
if response.StatusCode != http.StatusOK {
err = fmt.Errorf("get %s: server responded with %d", url, response.StatusCode)
return
}
var raw struct {
Records []struct {
Nas struct {
Path string
}
}
Links struct {
Next struct {
Href string
}
} `json:"_links"`
}
decoder := json.NewDecoder(response.Body)
err = decoder.Decode(&raw)
if err != nil {
return
}
if raw.Records != nil {
result.Paths = make([]string, 0, len(raw.Records))
for _, r := range raw.Records {
path := r.Nas.Path
if path != "" {
result.Paths = append(result.Paths, path)
}
}
}
nextPage := raw.Links.Next.Href
if nextPage != "" {
nextPage, err = resolveURL(url, nextPage)
}
result.NextPage = nextPage
return
}