Exemple #1
0
        private bool CheckResultType(JTokenType?expectedType, JToken result)
        {
            if (expectedType == null || result == null)
            {
                return(true);
            }
            JTokenType resultType = result.Type;

            switch (expectedType.Value)
            {
            case JTokenType.Integer:
            case JTokenType.Float:
                return(resultType == JTokenType.Integer || resultType == JTokenType.Float);

            default:
                return(resultType == expectedType);
            }
        }
Exemple #2
0
        private static JTokenType GetStringValueType(JTokenType?current)
        {
            if (current == null)
            {
                return(JTokenType.String);
            }

            switch (current.Value)
            {
            case JTokenType.Comment:
            case JTokenType.String:
            case JTokenType.Raw:
                return(current.Value);

            default:
                return(JTokenType.String);
            }
        }
Exemple #3
0
        private static JTokenType GetValueType(JTokenType?current, object value)
        {
            if (value == null)
            {
                return(JTokenType.Null);
            }
            else if (value == DBNull.Value)
            {
                return(JTokenType.Null);
            }
            else if (value is string)
            {
                return(GetStringValueType(current));
            }
            else if (value is long || value is int || value is short || value is sbyte ||
                     value is ulong || value is uint || value is ushort || value is byte)
            {
                return(JTokenType.Integer);
            }
            else if (value is double || value is float || value is decimal)
            {
                return(JTokenType.Float);
            }
            else if (value is DateTime)
            {
                return(JTokenType.Date);
            }
#if !PocketPC && !NET20
            else if (value is DateTimeOffset)
            {
                return(JTokenType.Date);
            }
#endif
            else if (value is byte[])
            {
                return(JTokenType.Bytes);
            }
            else if (value is bool)
            {
                return(JTokenType.Boolean);
            }

            throw new ArgumentException("Could not determine JSON object type for type {0}.".FormatWith(CultureInfo.InvariantCulture, value.GetType()));
        }
Exemple #4
0
 private static JTokenType GetValueType(JTokenType?current, object value)
 {
     if (value == null || value == DBNull.Value)
     {
         return(JTokenType.Null);
     }
     if (value is string)
     {
         return(JValue.GetStringValueType(current));
     }
     if (value is long || value is int || (value is short || value is sbyte) || (value is ulong || value is uint || (value is ushort || value is byte)) || value is Enum)
     {
         return(JTokenType.Integer);
     }
     if (value is double || value is float || value is Decimal)
     {
         return(JTokenType.Float);
     }
     if (value is DateTime)
     {
         return(JTokenType.Date);
     }
     if (value is byte[])
     {
         return(JTokenType.Bytes);
     }
     if (value is bool)
     {
         return(JTokenType.Boolean);
     }
     if (value is Guid)
     {
         return(JTokenType.Guid);
     }
     if ((object)(value as Uri) != null)
     {
         return(JTokenType.Uri);
     }
     if (value is TimeSpan)
     {
         return(JTokenType.TimeSpan);
     }
     throw new ArgumentException("Could not determine JSON object type for type {0}.".FormatWith((IFormatProvider)CultureInfo.InvariantCulture, (object)value.GetType()));
 }
        private static object GetJsonArray(JToken array)
        {
            JTokenType?arrayType = array.Children().FirstOrDefault()?.Type;

            if (arrayType == null)
            {
                return(array.Values <string>().ToList());
            }

            object retVar = arrayType switch
            {
                JTokenType.Object => array.Values <JObject>().ToList(),
                JTokenType.Integer => array.Values <int>().ToList(),
                JTokenType.Float => array.Values <float>().ToList(),
                JTokenType.String => array.Values <string>().ToList(),
                JTokenType.Boolean => array.Values <bool>().ToList(),
                _ => array.Values <string>().ToList()
            };

            return(retVar);
        }
        private static JTokenType GetValueType(JTokenType? current, object value)
        {
            if (value == null)
                return JTokenType.Null;
#if !(NETFX_CORE || PORTABLE40 || PORTABLE)
            else if (value == DBNull.Value)
                return JTokenType.Null;
#endif
            else if (value is string)
                return GetStringValueType(current);
            else if (value is long || value is int || value is short || value is sbyte
                     || value is ulong || value is uint || value is ushort || value is byte)
                return JTokenType.Integer;
            else if (value is Enum)
                return JTokenType.Integer;
#if !(NET20 || NET35 || PORTABLE40 || PORTABLE)
            else if (value is BigInteger)
                return JTokenType.Integer;
#endif
            else if (value is double || value is float || value is decimal)
                return JTokenType.Float;
            else if (value is DateTime)
                return JTokenType.Date;
#if !NET20
            else if (value is DateTimeOffset)
                return JTokenType.Date;
#endif
            else if (value is byte[])
                return JTokenType.Bytes;
            else if (value is bool)
                return JTokenType.Boolean;
            else if (value is Guid)
                return JTokenType.Guid;
            else if (value is Uri)
                return JTokenType.Uri;
            else if (value is TimeSpan)
                return JTokenType.TimeSpan;

            throw new ArgumentException("Could not determine JSON object type for type {0}.".FormatWith(CultureInfo.InvariantCulture, value.GetType()));
        }
        private bool HandleValueType()
        {
            switch (_valueType)
            {
            case JTokenType.Null:
                SetToken(JsonToken.Null);
                _valueType = null;

                if (PeekState() == JTokenType.Property)
                {
                    _stateStack.Pop();
                }
                return(true);

            case JTokenType.Object:
                SetToken(JsonToken.StartObject);
                _stateStack.Push(JTokenType.Object);
                _valueType = null;
                return(true);

            case JTokenType.Array:
                SetToken(JsonToken.StartArray);
                _stateStack.Push(JTokenType.Array);
                _valueType = null;
                return(true);

            case JTokenType.Constructor:
                string constructorName = _reader.GetAttribute("name");
                if (constructorName == null)
                {
                    throw new Exception("No constructor name specified.");
                }

                SetToken(JsonToken.StartConstructor, constructorName);
                _stateStack.Push(JTokenType.Constructor);
                _valueType = null;
                return(true);
            }
            return(false);
        }
Exemple #8
0
        /// <summary>
        ///		Convierte un valor de Json en un valor .Net
        /// </summary>
        private object ConvertJsonObject(JTokenType?type, JToken value)
        {
            switch (type)
            {
            case JTokenType.Integer:
                return((int?)value);

            case JTokenType.Float:
                return((float?)value);

            case JTokenType.String:
                return((string)value);

            case JTokenType.Boolean:
                return((bool)value);

            case JTokenType.Date:
                return((DateTime?)value);

            case JTokenType.Bytes:
                return((byte[])value);

            case JTokenType.Guid:
                return((Guid?)value);

            case JTokenType.Uri:
                return((Uri)value);

            case JTokenType.TimeSpan:
                return((TimeSpan?)value);

            case JTokenType.Null:
                return(DBNull.Value);

            default:
                return(null);
            }
        }
Exemple #9
0
        private static JTokenType GetStringValueType(JTokenType?current)
        {
            if (current == null)
            {
                return(JTokenType.String);
            }
            JTokenType value = current.Value;

            switch (value)
            {
            case JTokenType.Comment:
            case JTokenType.String:
                break;

            default:
                if (value != JTokenType.Raw)
                {
                    return(JTokenType.String);
                }
                break;
            }
            return(current.Value);
        }
        public override bool Read()
        {
            if (HandleValueType())
                return true;

            while (_reader.Read())
            {
                switch (_reader.NodeType)
                {
                    case XmlNodeType.Element:
                        string typeName = _reader.GetAttribute("type");
                        if (typeName == null)
                            throw new Exception("No type specified.");

                        _valueType = (JTokenType)Enum.Parse(typeof(JTokenType), typeName, true);

                        switch (PeekState())
                        {
                            case JTokenType.None:
                                HandleValueType();
                                return true;
                            case JTokenType.Object:
                                SetToken(JsonToken.PropertyName, _reader.LocalName);
                                _stateStack.Push(JTokenType.Property);
                                return true;
                            case JTokenType.Array:
                            case JTokenType.Constructor:
                                continue;
                            default:
                                throw new ArgumentOutOfRangeException();
                        }
                    case XmlNodeType.EndElement:
                        switch (_stateStack.Peek())
                        {
                            case JTokenType.Object:
                                SetToken(JsonToken.EndObject);
                                _stateStack.Pop();
                                if (PeekState() == JTokenType.Property)
                                    _stateStack.Pop();
                                return true;
                            case JTokenType.Array:
                                SetToken(JsonToken.EndArray);
                                _stateStack.Pop();
                                if (PeekState() == JTokenType.Property)
                                    _stateStack.Pop();
                                return true;
                            case JTokenType.Constructor:
                                SetToken(JsonToken.EndConstructor);
                                _stateStack.Pop();
                                if (PeekState() == JTokenType.Property)
                                    _stateStack.Pop();
                                return true;
                        }

                        _stateStack.Pop();
                        if (PeekState() == JTokenType.Property)
                            _stateStack.Pop();

                        break;
                    case XmlNodeType.Text:
                    case XmlNodeType.CDATA:
                        switch (_valueType)
                        {
                            case JTokenType.Integer:
                                SetToken(JsonToken.Integer, Convert.ToInt64(_reader.Value, CultureInfo.InvariantCulture));
                                break;
                            case JTokenType.Float:
                                SetToken(JsonToken.Float, Convert.ToDouble(_reader.Value, CultureInfo.InvariantCulture));
                                break;
                            case JTokenType.String:
                            case JTokenType.Uri:
                            case JTokenType.TimeSpan:
                            case JTokenType.Guid:
                                SetToken(JsonToken.String, _reader.Value);
                                break;
                            case JTokenType.Boolean:
                                SetToken(JsonToken.Boolean, Convert.ToBoolean(_reader.Value, CultureInfo.InvariantCulture));
                                break;
                            case JTokenType.Date:
                                SetToken(JsonToken.Date, Convert.ToDateTime(_reader.Value, CultureInfo.InvariantCulture));
                                break;
                            case JTokenType.Bytes:
                                SetToken(JsonToken.Bytes, Convert.FromBase64String(_reader.Value));
                                break;
                            default:
                                throw new ArgumentOutOfRangeException();
                        }
                        _stateStack.Push(_valueType.Value);
                        return true;
                    default:
                        throw new ArgumentOutOfRangeException();
                }
            }

            return false;
        }
        private bool HandleValueType()
        {
            switch (_valueType)
            {
                case JTokenType.Null:
                    SetToken(JsonToken.Null);
                    _valueType = null;

                    if (PeekState() == JTokenType.Property)
                        _stateStack.Pop();
                    return true;
                case JTokenType.Object:
                    SetToken(JsonToken.StartObject);
                    _stateStack.Push(JTokenType.Object);
                    _valueType = null;
                    return true;
                case JTokenType.Array:
                    SetToken(JsonToken.StartArray);
                    _stateStack.Push(JTokenType.Array);
                    _valueType = null;
                    return true;
                case JTokenType.Constructor:
                    string constructorName = _reader.GetAttribute("name");
                    if (constructorName == null)
                        throw new Exception("No constructor name specified.");

                    SetToken(JsonToken.StartConstructor, constructorName);
                    _stateStack.Push(JTokenType.Constructor);
                    _valueType = null;
                    return true;
            }
            return false;
        }
Exemple #12
0
        private static JTokenType GetValueType(JTokenType? current, object? value)
        {
            if (value == null)
            {
                return JTokenType.Null;
            }
#if HAVE_ADO_NET
            else if (value == DBNull.Value)
            {
                return JTokenType.Null;
            }
#endif
            else if (value is string)
            {
                return GetStringValueType(current);
            }
            else if (
                value is long
                || value is int
                || value is short
                || value is sbyte
                || value is ulong
                || value is uint
                || value is ushort
                || value is byte
            )
            {
                return JTokenType.Integer;
            }
            else if (value is Enum)
            {
                return JTokenType.Integer;
            }
#if HAVE_BIG_INTEGER
            else if (value is BigInteger)
            {
                return JTokenType.Integer;
            }
#endif
            else if (value is double || value is float || value is decimal)
            {
                return JTokenType.Float;
            }
            else if (value is DateTime)
            {
                return JTokenType.Date;
            }
#if HAVE_DATE_TIME_OFFSET
            else if (value is DateTimeOffset)
            {
                return JTokenType.Date;
            }
#endif
            else if (value is byte[])
            {
                return JTokenType.Bytes;
            }
            else if (value is bool)
            {
                return JTokenType.Boolean;
            }
            else if (value is Guid)
            {
                return JTokenType.Guid;
            }
            else if (value is Uri)
            {
                return JTokenType.Uri;
            }
            else if (value is TimeSpan)
            {
                return JTokenType.TimeSpan;
            }

            throw new ArgumentException(
                "Could not determine JSON object type for type {0}.".FormatWith(
                    CultureInfo.InvariantCulture,
                    value.GetType()
                )
            );
        }
Exemple #13
0
        private EvaluationDetail <JToken> Evaluate(string featureKey, User user, JToken defaultValue, JTokenType?expectedType,
                                                   EventFactory eventFactory)
        {
            if (!Initialized())
            {
                if (_featureStore.Initialized())
                {
                    Log.Warn("Flag evaluation before client initialized; using last known values from feature store");
                }
                else
                {
                    Log.Warn("Flag evaluation before client initialized; feature store unavailable, returning default value");
                    return(new EvaluationDetail <JToken>(defaultValue, null,
                                                         new EvaluationReason.Error(EvaluationErrorKind.CLIENT_NOT_READY)));
                }
            }

            FeatureFlag featureFlag = null;

            try
            {
                featureFlag = _featureStore.Get(VersionedDataKind.Features, featureKey);
                if (featureFlag == null)
                {
                    Log.InfoFormat("Unknown feature flag {0}; returning default value",
                                   featureKey);

                    _eventProcessor.SendEvent(eventFactory.NewUnknownFeatureRequestEvent(featureKey, user, defaultValue,
                                                                                         EvaluationErrorKind.FLAG_NOT_FOUND));
                    return(new EvaluationDetail <JToken>(defaultValue, null,
                                                         new EvaluationReason.Error(EvaluationErrorKind.FLAG_NOT_FOUND)));
                }

                if (user == null || user.Key == null)
                {
                    Log.Warn("Feature flag evaluation called with null user or null user key. Returning default");
                    _eventProcessor.SendEvent(eventFactory.NewDefaultFeatureRequestEvent(featureFlag, user, defaultValue,
                                                                                         EvaluationErrorKind.USER_NOT_SPECIFIED));
                    return(new EvaluationDetail <JToken>(defaultValue, null,
                                                         new EvaluationReason.Error(EvaluationErrorKind.USER_NOT_SPECIFIED)));
                }

                FeatureFlag.EvalResult evalResult = featureFlag.Evaluate(user, _featureStore, eventFactory);
                if (!IsOffline())
                {
                    foreach (var prereqEvent in evalResult.PrerequisiteEvents)
                    {
                        _eventProcessor.SendEvent(prereqEvent);
                    }
                }
                var detail = evalResult.Result;
                if (detail.VariationIndex == null)
                {
                    detail = new EvaluationDetail <JToken>(defaultValue, null, detail.Reason);
                }
                if (detail.Value != null && !CheckResultType(expectedType, detail.Value))
                {
                    Log.ErrorFormat("Expected type: {0} but got {1} when evaluating FeatureFlag: {2}. Returning default",
                                    expectedType,
                                    detail.Value.GetType(),
                                    featureKey);

                    _eventProcessor.SendEvent(eventFactory.NewDefaultFeatureRequestEvent(featureFlag, user, defaultValue,
                                                                                         EvaluationErrorKind.WRONG_TYPE));
                    return(new EvaluationDetail <JToken>(defaultValue, null,
                                                         new EvaluationReason.Error(EvaluationErrorKind.WRONG_TYPE)));
                }
                _eventProcessor.SendEvent(eventFactory.NewFeatureRequestEvent(featureFlag, user, detail, defaultValue));
                return(detail);
            }
            catch (Exception e)
            {
                Log.ErrorFormat("Encountered exception in LaunchDarkly client: {0} when evaluating feature key: {1} for user key: {2}",
                                Util.ExceptionMessage(e),
                                featureKey,
                                user.Key);
                Log.Debug(e.ToString(), e);
                var detail = new EvaluationDetail <JToken>(defaultValue, null,
                                                           new EvaluationReason.Error(EvaluationErrorKind.EXCEPTION));
                if (featureFlag == null)
                {
                    _eventProcessor.SendEvent(eventFactory.NewUnknownFeatureRequestEvent(featureKey, user, defaultValue,
                                                                                         EvaluationErrorKind.EXCEPTION));
                }
                else
                {
                    _eventProcessor.SendEvent(eventFactory.NewFeatureRequestEvent(featureFlag, user,
                                                                                  detail, defaultValue));
                }
                return(detail);
            }
        }
 private static JTokenType \u202D‌‮‬‌‍‮‍‪‫‫​‪‌‮‫‏‭‭‭‫‍‍‬‏‏‫‮(JTokenType?_param0)
 {
     // ISSUE: unable to decompile the method.
 }
        private static JTokenType GetValueType(JTokenType?current, object value)
        {
            if (value == null)
            {
                return(JTokenType.Null);
            }
#if !(DOTNET || PORTABLE40 || (UNITY_WSA || UNITY_WINRT))
            else if (value == DBNull.Value)
            {
                return(JTokenType.Null);
            }
#endif
            else if (value is string)
            {
                return(GetStringValueType(current));
            }
            else if (value is long || value is int || value is short || value is sbyte ||
                     value is ulong || value is uint || value is ushort || value is byte)
            {
                return(JTokenType.Integer);
            }
            else if (value is Enum)
            {
                return(JTokenType.Integer);
            }
#if !(NET20 || NET35 || PORTABLE40 || (UNITY_WSA || UNITY_WINRT))
            else if (value is BigInteger)
            {
                return(JTokenType.Integer);
            }
#endif
            else if (value is double || value is float || value is decimal)
            {
                return(JTokenType.Float);
            }
            else if (value is DateTime)
            {
                return(JTokenType.Date);
            }
#if !NET20
            else if (value is DateTimeOffset)
            {
                return(JTokenType.Date);
            }
#endif
            else if (value is byte[])
            {
                return(JTokenType.Bytes);
            }
            else if (value is bool)
            {
                return(JTokenType.Boolean);
            }
            else if (value is Guid)
            {
                return(JTokenType.Guid);
            }
            else if (value is Uri)
            {
                return(JTokenType.Uri);
            }
            else if (value is TimeSpan)
            {
                return(JTokenType.TimeSpan);
            }

            throw new ArgumentException("Could not determine JSON object type for type {0}.".FormatWith(CultureInfo.InvariantCulture, value.GetType()));
        }
        public override bool Read()
        {
            if (HandleValueType())
            {
                return(true);
            }

            while (_reader.Read())
            {
                switch (_reader.NodeType)
                {
                case XmlNodeType.Element:
                    string typeName = _reader.GetAttribute("type");
                    if (typeName == null)
                    {
                        throw new Exception("No type specified.");
                    }

                    _valueType = (JTokenType)Enum.Parse(typeof(JTokenType), typeName, true);

                    switch (PeekState())
                    {
                    case JTokenType.None:
                        HandleValueType();
                        return(true);

                    case JTokenType.Object:
                        SetToken(JsonToken.PropertyName, _reader.LocalName);
                        _stateStack.Push(JTokenType.Property);
                        return(true);

                    case JTokenType.Array:
                    case JTokenType.Constructor:
                        continue;

                    default:
                        throw new ArgumentOutOfRangeException();
                    }

                case XmlNodeType.EndElement:
                    switch (_stateStack.Peek())
                    {
                    case JTokenType.Object:
                        SetToken(JsonToken.EndObject);
                        _stateStack.Pop();
                        if (PeekState() == JTokenType.Property)
                        {
                            _stateStack.Pop();
                        }
                        return(true);

                    case JTokenType.Array:
                        SetToken(JsonToken.EndArray);
                        _stateStack.Pop();
                        if (PeekState() == JTokenType.Property)
                        {
                            _stateStack.Pop();
                        }
                        return(true);

                    case JTokenType.Constructor:
                        SetToken(JsonToken.EndConstructor);
                        _stateStack.Pop();
                        if (PeekState() == JTokenType.Property)
                        {
                            _stateStack.Pop();
                        }
                        return(true);
                    }

                    _stateStack.Pop();
                    if (PeekState() == JTokenType.Property)
                    {
                        _stateStack.Pop();
                    }

                    break;

                case XmlNodeType.Text:
                case XmlNodeType.CDATA:
                    switch (_valueType)
                    {
                    case JTokenType.Integer:
                        SetToken(JsonToken.Integer, Convert.ToInt64(_reader.Value, CultureInfo.InvariantCulture));
                        break;

                    case JTokenType.Float:
                        SetToken(JsonToken.Float, Convert.ToDouble(_reader.Value, CultureInfo.InvariantCulture));
                        break;

                    case JTokenType.String:
                    case JTokenType.Uri:
                    case JTokenType.TimeSpan:
                    case JTokenType.Guid:
                        SetToken(JsonToken.String, _reader.Value);
                        break;

                    case JTokenType.Boolean:
                        SetToken(JsonToken.Boolean, Convert.ToBoolean(_reader.Value, CultureInfo.InvariantCulture));
                        break;

                    case JTokenType.Date:
                        SetToken(JsonToken.Date, Convert.ToDateTime(_reader.Value, CultureInfo.InvariantCulture));
                        break;

                    case JTokenType.Bytes:
                        SetToken(JsonToken.Bytes, Convert.FromBase64String(_reader.Value));
                        break;

                    default:
                        throw new ArgumentOutOfRangeException();
                    }
                    _stateStack.Push(_valueType.Value);
                    return(true);

                default:
                    throw new ArgumentOutOfRangeException();
                }
            }

            return(false);
        }
Exemple #17
0
        private static JTokenType GetValueType(JTokenType?current, object value)
        {
            switch (value)
            {
            case (null):
                return(JTokenType.Null);

                break;
            }
            if (value == DBNull.Value)
            {
                return(JTokenType.Null);
            }
            if (value is string)
            {
                return(GetStringValueType(current));
            }
            if ((((value is long) || (value is int)) || ((value is short) || (value is sbyte))) || (((value is ulong) || (value is uint)) || ((value is ushort) || (value is byte))))
            {
                return(JTokenType.Integer);
            }
            if (value is Enum)
            {
                return(JTokenType.Integer);
            }
            if (value is BigInteger)
            {
                return(JTokenType.Integer);
            }
            if (((value is double) || (value is float)) || (value is decimal))
            {
                return(JTokenType.Float);
            }
            if (value is DateTime)
            {
                return(JTokenType.Date);
            }
            if (value is DateTimeOffset)
            {
                return(JTokenType.Date);
            }
            if (value is byte[])
            {
                return(JTokenType.Bytes);
            }
            if (value is bool)
            {
                return(JTokenType.Boolean);
            }
            if (value is Guid)
            {
                return(JTokenType.Guid);
            }
            if (value is Uri)
            {
                return(JTokenType.Uri);
            }
            if (!(value is TimeSpan))
            {
                throw new ArgumentException("Could not determine JSON object type for type {0}.".FormatWith(CultureInfo.InvariantCulture, value.GetType()));
            }
            return(JTokenType.TimeSpan);
        }
Exemple #18
0
        private JToken Evaluate(string featureKey, User user, JToken defaultValue, JTokenType?expectedType)
        {
            if (!Initialized())
            {
                Log.Warn("LaunchDarkly client has not yet been initialized. Returning default");
                return(defaultValue);
            }
            if (user == null || user.Key == null)
            {
                Log.Warn("Feature flag evaluation called with null user or null user key. Returning default");
                sendFlagRequestEvent(featureKey, user, defaultValue, defaultValue, null);
                return(defaultValue);
            }

            try
            {
                var featureFlag = _featureStore.Get(VersionedDataKind.Features, featureKey);
                if (featureFlag == null)
                {
                    Log.InfoFormat("Unknown feature flag {0}; returning default value",
                                   featureKey);

                    sendFlagRequestEvent(featureKey, user, defaultValue, defaultValue, null);
                    return(defaultValue);
                }

                FeatureFlag.EvalResult evalResult = featureFlag.Evaluate(user, _featureStore, _configuration);
                if (!IsOffline())
                {
                    foreach (var prereqEvent in evalResult.PrerequisiteEvents)
                    {
                        _eventStore.Add(prereqEvent);
                    }
                }
                if (evalResult.Result != null)
                {
                    if (expectedType != null && !evalResult.Result.Type.Equals(expectedType))
                    {
                        Log.ErrorFormat("Expected type: {0} but got {1} when evaluating FeatureFlag: {2}. Returning default",
                                        expectedType,
                                        evalResult.GetType(),
                                        featureKey);

                        sendFlagRequestEvent(featureKey, user, defaultValue, defaultValue, featureFlag.Version);
                        return(defaultValue);
                    }
                    sendFlagRequestEvent(featureKey, user, evalResult.Result, defaultValue, featureFlag.Version);
                    return(evalResult.Result);
                }
            }
            catch (Exception e)
            {
                Log.ErrorFormat("Encountered exception in LaunchDarkly client: {0} when evaluating feature key: {1} for user key: {2}",
                                e,
                                Util.ExceptionMessage(e),
                                featureKey,
                                user.Key);

                Log.Debug("{0}", e);
            }
            sendFlagRequestEvent(featureKey, user, defaultValue, defaultValue, null);
            return(defaultValue);
        }
 private static JTokenType \u200E‬‌‭​‍‪‬‫‏‪‍‌‮‬‬‌‬‪‭‎‭​‍‪‭‮(JTokenType?_param0, object _param1)
 {
     // ISSUE: unable to decompile the method.
 }