Exemplo n.º 1
0
        public Error Deserialize(ref JsonReader reader, IJsonFormatterResolver formatterResolver)
        {
            switch (reader.GetCurrentJsonToken())
            {
            case JsonToken.String:
            {
                var error = new Error {
                    Reason = reader.ReadString()
                };
                return(error);
            }

            case JsonToken.BeginObject:
            {
                var formatter = formatterResolver.GetFormatter <Dictionary <string, object> >();
                var dict      = formatter.Deserialize(ref reader, formatterResolver);

                var error = new Error();
                error.FillValues(dict);

                if (dict.TryGetValue("caused_by", out var causedBy))
                {
                    error.CausedBy = formatterResolver.ReserializeAndDeserialize <ErrorCause>(causedBy);
                }

                if (dict.TryGetValue("headers", out var headers))
                {
                    var d = formatterResolver.ReserializeAndDeserialize <Dictionary <string, string> >(headers);
                    if (d != null)
                    {
                        error.Headers = new ReadOnlyDictionary <string, string>(d);
                    }
                }

                error.Metadata = ErrorCause.ErrorCauseMetadata.CreateCauseMetadata(dict, formatterResolver);

                return(ReadRootCause(dict, formatterResolver, error));
            }

            default:
                reader.ReadNextBlock();
                return(null);
            }
        }
Exemplo n.º 2
0
            private static IReadOnlyCollection <ShardFailure> GetShardFailures(object value, IJsonFormatterResolver formatterResolver)
            {
                if (!(value is List <object> objects))
                {
                    return(DefaultFailedShards);
                }

                var values = new List <ShardFailure>();

                foreach (var v in objects)
                {
                    var cause = formatterResolver.ReserializeAndDeserialize <ShardFailure>(v);
                    if (cause != null)
                    {
                        values.Add(cause);
                    }
                }
                return(new ReadOnlyCollection <ShardFailure>(values.ToArray()));
            }
Exemplo n.º 3
0
        // TODO: Optimize this
        public ServerError Deserialize(ref JsonReader reader, IJsonFormatterResolver formatterResolver)
        {
            var formatter = formatterResolver.GetFormatter <Dictionary <string, object> >();
            var dict      = formatter.Deserialize(ref reader, formatterResolver);

            var statusCode = -1;

            if (dict.TryGetValue("status", out var status))
            {
                statusCode = Convert.ToInt32(status);
            }

            if (!dict.TryGetValue("error", out var error))
            {
                return(null);
            }

            var err = formatterResolver.ReserializeAndDeserialize <Error>(error);

            return(new ServerError(err, statusCode));
        }
Exemplo n.º 4
0
        public ShardFailure Deserialize(ref JsonReader reader, IJsonFormatterResolver formatterResolver)
        {
            var failure = new ShardFailure();

            if (reader.GetCurrentJsonToken() != JsonToken.BeginObject)
            {
                reader.ReadNextBlock();
                return(failure);
            }

            var formatter = formatterResolver.GetFormatter <Dictionary <string, object> >();
            var dict      = formatter.Deserialize(ref reader, formatterResolver);

            if (dict.TryGetValue("shard", out var shard))
            {
                failure.Shard = Convert.ToInt32(shard);
            }
            if (dict.TryGetValue("index", out var index))
            {
                failure.Index = Convert.ToString(index);
            }
            if (dict.TryGetValue("node", out var node))
            {
                failure.Node = Convert.ToString(node);
            }
            if (dict.TryGetValue("status", out var status))
            {
                failure.Status = Convert.ToString(status);
            }
            if (dict.TryGetValue("reason", out var reason))
            {
                var cause = formatterResolver.ReserializeAndDeserialize <ErrorCause>(reason);
                failure.Reason = cause;
            }
            return(failure);
        }
Exemplo n.º 5
0
        public ErrorCause Deserialize(ref JsonReader reader, IJsonFormatterResolver formatterResolver)
        {
            var token = reader.GetCurrentJsonToken();

            switch (token)
            {
            case JsonToken.BeginObject:
            {
                var formatter  = formatterResolver.GetFormatter <Dictionary <string, object> >();
                var dict       = formatter.Deserialize(ref reader, formatterResolver);
                var errorCause = new ErrorCause();
                errorCause.FillValues(dict);

                if (dict.TryGetValue("caused_by", out var causedBy))
                {
                    errorCause.CausedBy = formatterResolver.ReserializeAndDeserialize <ErrorCause>(causedBy);
                }

                errorCause.Metadata = ErrorCause.ErrorCauseMetadata.CreateCauseMetadata(dict, formatterResolver);

                return(errorCause);
            }

            case JsonToken.String:
            {
                var errorCause = new ErrorCause {
                    Reason = reader.ReadString()
                };
                return(errorCause);
            }

            default:
                reader.ReadNextBlock();
                return(null);
            }
        }