-
Notifications
You must be signed in to change notification settings - Fork 16
Expand file tree
/
Copy pathevaluationcontext_static.go
More file actions
34 lines (30 loc) · 998 Bytes
/
evaluationcontext_static.go
File metadata and controls
34 lines (30 loc) · 998 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
package flagsmith
func getTraitEvaluationContext(v interface{}) TraitEvaluationContext {
tCtx, ok := v.(TraitEvaluationContext)
if ok {
return tCtx
}
return TraitEvaluationContext{Value: v}
}
func NewTraitEvaluationContext(value interface{}, transient bool) TraitEvaluationContext {
return TraitEvaluationContext{Value: value, Transient: &transient}
}
func NewEvaluationContext(identifier string, traits map[string]interface{}) EvaluationContext {
ec := EvaluationContext{}
traitsCtx := make(map[string]*TraitEvaluationContext, len(traits))
for tKey, tValue := range traits {
tCtx := getTraitEvaluationContext(tValue)
traitsCtx[tKey] = &tCtx
}
ec.Identity = &IdentityEvaluationContext{
Identifier: &identifier,
Traits: traitsCtx,
}
return ec
}
func NewTransientEvaluationContext(identifier string, traits map[string]interface{}) EvaluationContext {
ec := NewEvaluationContext(identifier, traits)
var transient = true
ec.Identity.Transient = &transient
return ec
}