Skip to content

Commit 7fa4611

Browse files
authored
Merge pull request #7 from chandrajeetn/MLE-15719
fetching flags at org level
2 parents decd2e1 + c81f6da commit 7fa4611

File tree

1 file changed

+27
-20
lines changed

1 file changed

+27
-20
lines changed

localEvaluation/localEvaluation.go

Lines changed: 27 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -89,8 +89,8 @@ func Initialize() {
8989
}
9090
}
9191

92-
func InitializeWithConfig(conf AmplitudeConfig) {
93-
client = local.Initialize(LocalEvaluationDeploymentKey, (*local.Config)(&conf))
92+
func InitializeWithConfig(conf AmplitudeConfig, deploymentKey string) {
93+
client = local.Initialize(deploymentKey, (*local.Config)(&conf))
9494
err := client.Start()
9595
if err != nil {
9696
err = fmt.Errorf("unable to create local evaluation client with given config %+v with error %s", conf, err.Error())
@@ -107,8 +107,8 @@ func contains(s []string, e string) bool {
107107
return false
108108
}
109109

110-
func fetch(flagKeys []string, user UserProperties) map[string]AmplitudeVariant {
111-
variants := make(map[string]AmplitudeVariant)
110+
func fetch(flagKeys []string, user UserProperties, valueOnly bool) map[string]interface{} {
111+
variants := make(map[string]interface{})
112112
userProp := map[string]interface{}{
113113
"org_id": user.OrgId,
114114
"org_name": user.OrgName,
@@ -135,49 +135,56 @@ func fetch(flagKeys []string, user UserProperties) map[string]AmplitudeVariant {
135135
continue
136136
}
137137
if !filter {
138-
variants[k] = AmplitudeVariant{
139-
Value: v.Variant.Key,
140-
Payload: v.Variant.Payload,
138+
if valueOnly {
139+
variants[k] = v.Variant.Key
140+
} else {
141+
variants[k] = AmplitudeVariant{
142+
Value: v.Variant.Key,
143+
Payload: v.Variant.Payload,
144+
}
141145
}
142146
continue
143147
}
144148
if contains(flagKeys, k) {
145-
variants[k] = AmplitudeVariant{
146-
Value: v.Variant.Key,
147-
Payload: v.Variant.Payload,
149+
if valueOnly {
150+
variants[k] = v.Variant.Key
151+
} else {
152+
variants[k] = AmplitudeVariant{
153+
Value: v.Variant.Key,
154+
Payload: v.Variant.Payload,
155+
}
148156
}
149157
}
150158
}
151-
152159
return variants
153160
}
154161

155162
func GetFeatureFlagString(flagName string, user UserProperties) string {
156163
flagKeys := []string{flagName}
157-
data := fetch(flagKeys, user)
158-
return data[flagName].Value
164+
data := fetch(flagKeys, user, false)
165+
return data[flagName].(AmplitudeVariant).Value
159166
}
160167

161168
func GetFeatureFlagBool(flagName string, user UserProperties) bool {
162169
flagKeys := []string{flagName}
163-
data := fetch(flagKeys, user)
164-
if val, err := strconv.ParseBool(data[flagName].Value); err == nil {
170+
data := fetch(flagKeys, user, false)
171+
if val, err := strconv.ParseBool(data[flagName].(AmplitudeVariant).Value); err == nil {
165172
return val
166173
}
167174
return false
168175
}
169176

170177
func GetFeatureFlagPayload(flagName string, user UserProperties) map[string]interface{} {
171178
flagKeys := []string{flagName}
172-
data := fetch(flagKeys, user)
179+
data := fetch(flagKeys, user, false)
173180
mapData := make(map[string]interface{})
174-
mapData["value"] = data[flagName].Value
175-
mapData["payload"] = data[flagName].Payload
181+
mapData["value"] = data[flagName].(AmplitudeVariant).Value
182+
mapData["payload"] = data[flagName].(AmplitudeVariant).Payload
176183
return mapData
177184
}
178185

179-
func GetFeatureFlagByOrg(user UserProperties) map[string]AmplitudeVariant {
186+
func GetFeatureFlagByOrg(user UserProperties) map[string]interface{} {
180187
flagKeys := []string{}
181-
data := fetch(flagKeys, user)
188+
data := fetch(flagKeys, user, true)
182189
return data
183190
}

0 commit comments

Comments
 (0)