Example #1
0
        private static void WriteNode(JsonTextWriter j, RequestNode node)
        {
            if (node.HitIndex != default)
            {
                j.WritePropertyName("h");
                j.WriteValue(node.HitIndex);
            }

            if (node.StartRequest.Method != "GET")
            {
                j.WritePropertyName("m");
                j.WriteValue(node.StartRequest.Method);
            }

            j.WritePropertyName("u");
            j.WriteValue(node.StartRequest.Url);

            if (node.EndRequest != null)
            {
                if (node.EndRequest.StatusCode != HttpStatusCode.OK)
                {
                    j.WritePropertyName("c");
                    j.WriteValue((int)node.EndRequest.StatusCode);
                }

                j.WritePropertyName("d");
                j.WriteValue(node.EndRequest.Duration.Ticks);
            }
        }
Example #2
0
        private static RequestNode ReadNode(JsonSerializer serializer, JsonReader j, List <int> dependencyIndexes)
        {
            var      hitIndex   = default(int);
            var      method     = "GET";
            string   url        = null;
            var      statusCode = HttpStatusCode.OK;
            TimeSpan?duration   = null;

            j.Read();
            while (j.TokenType == JsonToken.PropertyName)
            {
                switch ((string)j.Value)
                {
                case "h":
                    hitIndex = j.ReadAsInt32().Value;
                    break;

                case "m":
                    method = j.ReadAsString();
                    break;

                case "u":
                    url = j.ReadAsString();
                    break;

                case "c":
                    statusCode = (HttpStatusCode)j.ReadAsInt32().Value;
                    break;

                case "d":
                    j.Read();
                    Helper.Assert(j.TokenType == JsonToken.Integer, "The 'd' property should be an integer.");
                    duration = TimeSpan.FromTicks((long)j.Value);
                    break;

                case "e":
                    j.Read();
                    dependencyIndexes.AddRange(serializer.Deserialize <List <int> >(j));
                    break;
                }

                j.Read();
            }

            var node = new RequestNode(hitIndex, new StartRequest(method, url));

            if (duration != null)
            {
                node.EndRequest = new EndRequest(statusCode, url, duration ?? TimeSpan.Zero);
            }

            return(node);
        }
Example #3
0
        private static string GetNodeLabel(StringBuilder builder, RequestNode node)
        {
            builder.Clear();

            if (node.HitIndex != 0)
            {
                builder.AppendFormat("({0}) ", node.HitIndex);
            }

            var label = node.StartRequest.Url;

            if (label.EndsWith("/index.json"))
            {
                label = string.Join("/", label.Split('/').Reverse().Take(2).Reverse());
            }
            else if (label.EndsWith(".nupkg"))
            {
                label = label.Split('/').Last();
            }

            builder.Append(label);

            return(builder.ToString());
        }