@@ -10,21 +10,23 @@ import (
10
10
"github.com/open-feature/go-sdk/pkg/openfeature"
11
11
)
12
12
13
+ var _ openfeature.FeatureProvider = (* Provider )(nil )
14
+
15
+ // Evaluation ctx keys that are mapped to ConfigCat user data.
13
16
const (
14
17
IdentifierKey = openfeature .TargetingKey
15
18
EmailKey = "email"
16
19
CountryKey = "country"
17
20
)
18
21
19
- var _ openfeature.FeatureProvider = (* Provider )(nil )
20
-
21
22
type Client interface {
22
23
GetBoolValueDetails (key string , defaultValue bool , user sdk.User ) sdk.BoolEvaluationDetails
23
24
GetStringValueDetails (key string , defaultValue string , user sdk.User ) sdk.StringEvaluationDetails
24
25
GetFloatValueDetails (key string , defaultValue float64 , user sdk.User ) sdk.FloatEvaluationDetails
25
26
GetIntValueDetails (key string , defaultValue int , user sdk.User ) sdk.IntEvaluationDetails
26
27
}
27
28
29
+ // NewProvider creates an OpenFeature provider backed by ConfigCat.
28
30
func NewProvider (client Client ) * Provider {
29
31
return & Provider {
30
32
client : client ,
@@ -35,12 +37,14 @@ type Provider struct {
35
37
client Client
36
38
}
37
39
40
+ // Metadata returns value of Metadata (name of current service, exposed to openfeature sdk)
38
41
func (p * Provider ) Metadata () openfeature.Metadata {
39
42
return openfeature.Metadata {
40
43
Name : "ConfigCat" ,
41
44
}
42
45
}
43
46
47
+ // Hooks are not currently implemented, an empty slice is returned.
44
48
func (p * Provider ) Hooks () []openfeature.Hook {
45
49
return nil
46
50
}
@@ -109,6 +113,7 @@ func (p *Provider) IntEvaluation(ctx context.Context, flag string, defaultValue
109
113
}
110
114
}
111
115
116
+ // ObjectEvaluation attempts to parse a string feature flag value as JSON.
112
117
func (p * Provider ) ObjectEvaluation (ctx context.Context , flag string , defaultValue interface {}, evalCtx openfeature.FlattenedContext ) openfeature.InterfaceResolutionDetail {
113
118
user , errDetails := toUserData (evalCtx )
114
119
if errDetails != nil {
0 commit comments