@@ -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
155162func 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
161168func 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
170177func 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