/// <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)); }
/// <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))); }
// 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); }
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)); }