Ejemplo n.º 1
0
 /// <see cref="ILdClient.Track(string, User, string)"/>
 public void Track(string name, User user, string data)
 {
     if (user == null || user.Key == null)
     {
         Log.Warn("Track called with null user or null user key");
     }
     _eventStore.Add(new CustomEvent(name, EventUser.FromUser(user, _configuration), data));
 }
Ejemplo n.º 2
0
 /// <see cref="ILdClient.Identify(User)"/>
 public void Identify(User user)
 {
     if (user == null || user.Key == null)
     {
         Log.Warn("Identify called with null user or null user key");
     }
     _eventStore.Add(new IdentifyEvent(EventUser.FromUser(user, _configuration)));
 }
Ejemplo n.º 3
0
        // Returning either a nil EvalResult or EvalResult.value indicates prereq failure/error.
        private JToken Evaluate(User user, IFeatureStore featureStore, IList <FeatureRequestEvent> events, Configuration config)
        {
            var prereqOk = true;

            if (Prerequisites != null)
            {
                foreach (var prereq in Prerequisites)
                {
                    var    prereqFeatureFlag = featureStore.Get(VersionedDataKind.Features, prereq.Key);
                    JToken prereqEvalResult  = null;
                    if (prereqFeatureFlag == null)
                    {
                        Log.ErrorFormat("Could not retrieve prerequisite flag: {0} when evaluating: {1}",
                                        prereq.Key,
                                        Key);
                        return(null);
                    }
                    else if (prereqFeatureFlag.On)
                    {
                        prereqEvalResult = prereqFeatureFlag.Evaluate(user, featureStore, events, config);
                        try
                        {
                            JToken variation = prereqFeatureFlag.GetVariation(prereq.Variation);
                            if (prereqEvalResult == null || variation == null || !prereqEvalResult.Equals(variation))
                            {
                                prereqOk = false;
                            }
                        }
                        catch (EvaluationException e)
                        {
                            Log.WarnFormat("Error evaluating prerequisites: {0}",
                                           e,
                                           Util.ExceptionMessage(e));

                            prereqOk = false;
                        }
                    }
                    else
                    {
                        prereqOk = false;
                    }
                    //We don't short circuit and also send events for each prereq.
                    events.Add(new FeatureRequestEvent(prereqFeatureFlag.Key, EventUser.FromUser(user, config),
                                                       prereqEvalResult, null, prereqFeatureFlag.Version, prereq.Key));
                }
            }
            if (prereqOk)
            {
                return(GetVariation(EvaluateIndex(user, featureStore)));
            }
            return(null);
        }
Ejemplo n.º 4
0
 private void sendFlagRequestEvent(string key, User user, JToken value, JToken defaultValue, JToken version)
 {
     _eventStore.Add(new FeatureRequestEvent(key, EventUser.FromUser(user, _configuration), value, defaultValue, version, null));
 }