in internal/loader/settings_client.go [42:88]
func (s *EtagSettingsClient) GetSettings(ctx context.Context, client *azappconfig.Client) (*SettingsResponse, error) {
nullString := "\x00"
settingsResponse := &SettingsResponse{}
for filter, pageEtags := range s.etags {
if filter.KeyFilter != nil {
if filter.LabelFilter == nil {
filter.LabelFilter = &nullString // NUL is escaped to \x00 in golang
}
selector := azappconfig.SettingSelector{
KeyFilter: filter.KeyFilter,
LabelFilter: filter.LabelFilter,
Fields: azappconfig.AllSettingFields(),
}
conditions := make([]azcore.MatchConditions, 0)
for _, etag := range pageEtags {
conditions = append(conditions, azcore.MatchConditions{IfNoneMatch: etag})
}
pager := client.NewListSettingsPager(selector, &azappconfig.ListSettingsOptions{
MatchConditions: conditions,
})
pageCount := 0
for pager.More() {
pageCount++
page, err := pager.NextPage(context.Background())
if err != nil {
return nil, err
}
// If etag changed, return the non nil etags
if page.ETag != nil {
settingsResponse.Etags = make(map[acpv1.Selector][]*azcore.ETag)
return settingsResponse, nil
}
}
if pageCount != len(pageEtags) {
settingsResponse.Etags = make(map[acpv1.Selector][]*azcore.ETag)
return settingsResponse, nil
}
}
}
// no change in the settings, return nil etags
return settingsResponse, nil
}