func GetResourceData()

in pkg/providers/instance/azureresourcegraphutils.go [38:63]


func GetResourceData(ctx context.Context, client AzureResourceGraphAPI, req arg.QueryRequest) ([]Resource, error) {
	dataRemaining := true // used to handle ARG responses > 1 page long
	var data []Resource
	for dataRemaining {
		resp, err := client.Resources(ctx, req, nil)
		if err != nil {
			return nil, err
		}
		interfaceArray, ok := resp.Data.([]interface{})
		if !ok {
			return nil, fmt.Errorf("type casting query response as interface array failed")
		}
		for i := range interfaceArray {
			switch resource := interfaceArray[i].(type) {
			case map[string]interface{}:
				data = append(data, resource)
			}
		}
		dataRemaining = false
		if resp.SkipToken != nil {
			req.Options.SkipToken = resp.SkipToken
			dataRemaining = true
		}
	}
	return data, nil
}