Пример #1
0
        public static async Task<JSONDiff> Process(APICall data)
        {
            JToken d1;
            JToken d2;
            JSONExtract j = new JSONExtract();
            var jsonresultitem = new JSONDiff(data.API1, data.API2);
            try
            {
                d1 = await GetApi(j, data.API1);
            }
            catch (Exception ex)
            {
                jsonresultitem.AddItemAPI1(JSONWarnLevel.Fatal, "error reading url", ex);
                return jsonresultitem;
            }

            try
            {
                d2 = await GetApi(j, data.API2);
            }
            catch (Exception ex)
            {
                jsonresultitem.AddItemAPI2(JSONWarnLevel.Fatal, "error reading url", ex);
                return jsonresultitem;
            }

            try
            {
                JsonDifferenceReport(d1, d2, jsonresultitem, "root");
            }
            catch (Exception ex)
            {
                jsonresultitem.AddItemAPI2(JSONWarnLevel.Fatal, "error diffing json", ex);
                return jsonresultitem;
            }

            if (jsonresultitem.Messages.Any())
            {
                //filter based on parent count
                var messages = jsonresultitem.Messages.GroupBy(s => s.Message).Select(s => s).ToList();
                foreach (var g in messages)
                {
                    var gc = g.Count();
                    foreach (var m in g.Skip(1))
                    {
                        jsonresultitem.Messages.Remove(m);
                    }
                    g.First().Message = g.First().Message + $"[reoccured {gc} times]";
                }
            }
            return jsonresultitem;
        }
Пример #2
0
 public static async Task<JToken> GetApi(JSONExtract j, string url)
 {
     var raw = await j.DownloadPage(url, null, "GET");
     JToken token = JToken.Parse(raw);
     return token;
 }