...
1 package growthbook
2
3 import "encoding/json"
4
5
6
7 type Attributes map[string]interface{}
8
9
10
11 type FeatureMap map[string]*Feature
12
13
14 func ParseFeatureMap(data []byte) FeatureMap {
15 dict := map[string]interface{}{}
16 err := json.Unmarshal(data, &dict)
17 if err != nil {
18 logError("Failed parsing JSON input", "FeatureMap")
19 return nil
20 }
21 return BuildFeatureMap(dict)
22 }
23
24
25
26 func BuildFeatureMap(dict map[string]interface{}) FeatureMap {
27 fmap := FeatureMap{}
28 for k, v := range dict {
29 feature := BuildFeature(v)
30 if feature != nil {
31 fmap[k] = feature
32 }
33 }
34 return fmap
35 }
36
37
38
39
40
41
42 type ForcedVariationsMap map[string]int
43
44
45 type URLTargetType uint
46
47 const (
48 RegexURLTarget URLTargetType = iota
49 SimpleURLTarget = iota
50 )
51
52
53 type URLTarget struct {
54 Type URLTargetType
55 Include bool
56 Pattern string
57 }
58
59
60
61 type FeatureResultSource uint
62
63
64 const (
65 UnknownResultSource FeatureResultSource = iota + 1
66 DefaultValueResultSource
67 ForceResultSource
68 ExperimentResultSource
69 OverrideResultSource
70 )
71
72
73
74 func ParseFeatureResultSource(source string) FeatureResultSource {
75 switch source {
76 case "", "defaultValue":
77 return DefaultValueResultSource
78 case "force":
79 return ForceResultSource
80 case "experiment":
81 return ExperimentResultSource
82 case "override":
83 return OverrideResultSource
84 default:
85 return UnknownResultSource
86 }
87 }
88
View as plain text