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