func()

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
}