func()

in internal/loader/settings_client.go [121:173]


func (s *SelectorSettingsClient) GetSettings(ctx context.Context, client *azappconfig.Client) (*SettingsResponse, error) {
	settings := make([]azappconfig.Setting, 0)
	pageEtags := make(map[acpv1.Selector][]*azcore.ETag)

	for _, filter := range s.selectors {
		if filter.KeyFilter != nil {
			selector := azappconfig.SettingSelector{
				KeyFilter:   filter.KeyFilter,
				LabelFilter: filter.LabelFilter,
				Fields:      azappconfig.AllSettingFields(),
			}
			pager := client.NewListSettingsPager(selector, nil)
			latestEtags := make([]*azcore.ETag, 0)

			for pager.More() {
				page, err := pager.NextPage(ctx)
				if err != nil {
					return nil, err
				} else if page.Settings != nil {
					settings = append(settings, page.Settings...)
					latestEtags = append(latestEtags, page.ETag)
				}
			}
			// update the etags for the filter
			pageEtags[filter] = latestEtags
		} else {
			snapshot, err := client.GetSnapshot(ctx, *filter.SnapshotName, nil)
			if err != nil {
				return nil, err
			}

			if *snapshot.CompositionType != azappconfig.CompositionTypeKey {
				return nil, fmt.Errorf("compositionType for the selected snapshot '%s' must be 'key', found '%s'", *filter.SnapshotName, *snapshot.CompositionType)
			}

			pager := client.NewListSettingsForSnapshotPager(*filter.SnapshotName, nil)

			for pager.More() {
				page, err := pager.NextPage(ctx)
				if err != nil {
					return nil, err
				} else if page.Settings != nil {
					settings = append(settings, page.Settings...)
				}
			}
		}
	}

	return &SettingsResponse{
		Settings: settings,
		Etags:    pageEtags,
	}, nil
}