@@ -42,19 +42,24 @@ func Store(kvStore model.KeyValueStore, resp *model.OOAPICheckInResult) error {
4242
4343// GetFeatureFlag returns the value of a check-in feature flag. In case of any
4444// error this function will always return a false value.
45- func GetFeatureFlag (kvStore model.KeyValueStore , name string ) bool {
45+ func GetFeatureFlag (kvStore model.KeyValueStore , name string , defaultFlag bool ) bool {
4646 data , err := kvStore .Get (CheckInFlagsState )
4747 if err != nil {
48- return false // as documented
48+ return defaultFlag // as documented
4949 }
5050 var wrapper checkInFlagsWrapper
5151 if err := json .Unmarshal (data , & wrapper ); err != nil {
52- return false // as documented
52+ return defaultFlag // as documented
5353 }
54+ fmt .Println (wrapper )
5455 if time .Now ().After (wrapper .Expire ) {
55- return false // as documented
56+ return defaultFlag // as documented
5657 }
57- return wrapper .Flags [name ] // works even if map is nil
58+ flag , ok := wrapper .Flags [name ]
59+ if ok {
60+ return flag
61+ }
62+ return defaultFlag // default to true if the flag is not present
5863}
5964
6065// ExperimentEnabledKey returns the [model.KeyValueStore] key to use to
@@ -66,6 +71,6 @@ func ExperimentEnabledKey(name string) string {
6671// ExperimentEnabled returns whether a given experiment has been enabled by a previous
6772// execution of check-in. Some experiments are disabled by default for different reasons
6873// and we use the check-in API to control whether and when they should be enabled.
69- func ExperimentEnabled (kvStore model.KeyValueStore , name string ) bool {
70- return GetFeatureFlag (kvStore , ExperimentEnabledKey (name ))
74+ func ExperimentEnabled (kvStore model.KeyValueStore , name string , defaultFlag bool ) bool {
75+ return GetFeatureFlag (kvStore , ExperimentEnabledKey (name ), defaultFlag )
7176}
0 commit comments