OSDN Git Service

バージョン12.11の準備
[kancollesniffer/KancolleSniffer.git] / KancolleSniffer / ErrorLog.cs
index 5bb606a..cc6ca73 100644 (file)
@@ -18,8 +18,8 @@ using System.IO;
 using System.IO.Compression;\r
 using System.Linq;\r
 using System.Text;\r
-using System.Text.RegularExpressions;\r
 using System.Windows.Forms;\r
+using DynaJson;\r
 using KancolleSniffer.Model;\r
 using KancolleSniffer.Util;\r
 \r
@@ -33,14 +33,14 @@ namespace KancolleSniffer
     {\r
         private readonly Sniffer _sniffer;\r
         private BattleState _prevBattleState = BattleState.None;\r
-        private readonly List<string[]> _battleApiLog = new List<string[]>();\r
+        private readonly List<Main.Session> _battleApiLog = new List<Main.Session>();\r
 \r
         public ErrorLog(Sniffer sniffer)\r
         {\r
             _sniffer = sniffer;\r
         }\r
 \r
-        public void CheckBattleApi(string url, string request, string response)\r
+        public void CheckBattleApi(Main.Session session)\r
         {\r
             if (_prevBattleState == BattleState.None)\r
                 _battleApiLog.Clear();\r
@@ -48,11 +48,11 @@ namespace KancolleSniffer
             {\r
                 if (_sniffer.Battle.BattleState != BattleState.None)\r
                 {\r
-                    _battleApiLog.Add(new[] {url, request, response});\r
+                    _battleApiLog.Add(session);\r
                 }\r
                 else if (_prevBattleState == BattleState.Result &&\r
                          // battleresultのあとのship_deckかportでのみエラー判定する\r
-                         IsBattleResultError)\r
+                         _sniffer.IsBattleResultError)\r
                 {\r
                     throw new BattleResultError();\r
                 }\r
@@ -63,16 +63,13 @@ namespace KancolleSniffer
             }\r
         }\r
 \r
-        private bool IsBattleResultError =>\r
-            _sniffer.Battle.DisplayedResultRank.IsError || _sniffer.IsBattleResultStatusError;\r
-\r
         public string GenerateBattleErrorLog()\r
         {\r
-            foreach (var logs in _battleApiLog)\r
-                Privacy.Remove(ref logs[0], ref logs[1], ref logs[2]);\r
+            foreach (var s in _battleApiLog)\r
+                Privacy.Remove(s);\r
             var version = string.Join(".", Application.ProductVersion.Split('.').Take(2));\r
             var api = CompressApi(string.Join("\r\n",\r
-                new[] {BattleStartSlots()}.Concat(_battleApiLog.SelectMany(logs => logs))));\r
+                new[] {BattleStartSlots()}.Concat(_battleApiLog.SelectMany(s => s.Lines))));\r
             var rank = _sniffer.Battle.DisplayedResultRank;\r
             var status = string.Join("\r\n", new[]\r
             {\r
@@ -86,14 +83,14 @@ namespace KancolleSniffer
 \r
         private string BattleStartSlots()\r
         {\r
-            return JsonObject.CreateJsonObject((from ship in _sniffer.BattleStartStatus\r
-                group ship by ship.Fleet\r
-                into fleet\r
-                select\r
-                (from s in fleet\r
-                    select (from item in s.AllSlot select item.Spec.Id).ToArray()\r
-                ).ToArray()\r
-            ).ToArray()).ToString();\r
+            return new JsonObject((from ship in _sniffer.BattleStartStatus\r
+                    group ship by ship.Fleet\r
+                    into fleet\r
+                    select\r
+                        (from s in fleet\r
+                            select (from item in s.AllSlot select item.Spec.Id).ToArray()\r
+                        ).ToArray()\r
+                ).ToArray()).ToString();\r
         }\r
 \r
         private string HpDiffLog() => string.Join(" ",\r
@@ -102,11 +99,11 @@ namespace KancolleSniffer
             let actual = pair.Actual\r
             select $"({actual.Fleet.Number}-{actual.DeckIndex}) {assumed.NowHp}->{actual.NowHp}");\r
 \r
-        public string GenerateErrorLog(string url, string request, string response, string exception)\r
+        public string GenerateErrorLog(Main.Session s, string exception)\r
         {\r
-            Privacy.Remove(ref url, ref request, ref response);\r
+            Privacy.Remove(s);\r
             var version = string.Join(".", Application.ProductVersion.Split('.').Take(2));\r
-            var api = CompressApi($"{url}\r\n{request}\r\n{response}");\r
+            var api = CompressApi(string.Join("\r\n", s.Lines));\r
             var result = $"{{{{{{\r\n{DateTime.Now:g} {version}\r\n{exception}\r\n{api}\r\n}}}}}}";\r
             File.WriteAllText("error.log", result);\r
             return result;\r