Extend OpenFeature service (#106707)
This commit is contained in:
@@ -8,6 +8,29 @@ import (
|
||||
"github.com/open-feature/go-sdk/openfeature/memprovider"
|
||||
)
|
||||
|
||||
// inMemoryBulkProvider is a wrapper around memprovider.InMemoryProvider that
|
||||
// also allows for bulk evaluation of flags, necessary to proxy OFREP requests.
|
||||
type inMemoryBulkProvider struct {
|
||||
memprovider.InMemoryProvider
|
||||
flags map[string]memprovider.InMemoryFlag
|
||||
}
|
||||
|
||||
func newInMemoryBulkProvider(flags map[string]memprovider.InMemoryFlag) *inMemoryBulkProvider {
|
||||
return &inMemoryBulkProvider{
|
||||
InMemoryProvider: memprovider.NewInMemoryProvider(flags),
|
||||
flags: flags,
|
||||
}
|
||||
}
|
||||
|
||||
// ListFlags returns a list of all flags registered with the provider.
|
||||
func (p *inMemoryBulkProvider) ListFlags() ([]string, error) {
|
||||
keys := make([]string, 0, len(p.flags))
|
||||
for key := range p.flags {
|
||||
keys = append(keys, key)
|
||||
}
|
||||
return keys, nil
|
||||
}
|
||||
|
||||
func newStaticProvider(cfg *setting.Cfg) (openfeature.FeatureProvider, error) {
|
||||
confFlags, err := setting.ReadFeatureTogglesFromInitFile(cfg.Raw.Section("feature_toggles"))
|
||||
if err != nil {
|
||||
@@ -29,7 +52,7 @@ func newStaticProvider(cfg *setting.Cfg) (openfeature.FeatureProvider, error) {
|
||||
}
|
||||
}
|
||||
|
||||
return memprovider.NewInMemoryProvider(flags), nil
|
||||
return newInMemoryBulkProvider(flags), nil
|
||||
}
|
||||
|
||||
func createInMemoryFlag(name string, enabled bool) memprovider.InMemoryFlag {
|
||||
|
||||
Reference in New Issue
Block a user