OSDN Git Service

先制対潜の判定を最新の検証結果に合わせる
[kancollesniffer/KancolleSniffer.git] / KancolleSniffer / ErrorLog.cs
index 1134980..0c12769 100644 (file)
@@ -18,8 +18,9 @@ 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 KancolleSniffer.Model;\r
+using KancolleSniffer.Util;\r
 \r
 namespace KancolleSniffer\r
 {\r
@@ -40,13 +41,17 @@ namespace KancolleSniffer
 \r
         public void CheckBattleApi(string url, string request, string response)\r
         {\r
-            if (!url.EndsWith("api_port/port"))\r
-                _battleApiLog.Add(new[] {url, request, response});\r
+            if (_prevBattleState == BattleState.None)\r
+                _battleApiLog.Clear();\r
             try\r
             {\r
-                if (_prevBattleState == BattleState.Result &&\r
+                if (_sniffer.Battle.BattleState != BattleState.None)\r
+                {\r
+                    _battleApiLog.Add(new[] {url, request, response});\r
+                }\r
+                else if (_prevBattleState == BattleState.Result &&\r
                          // battleresultのあとのship_deckかportでのみエラー判定する\r
-                         IsBattleResultError)\r
+                         _sniffer.IsBattleResultError)\r
                 {\r
                     throw new BattleResultError();\r
                 }\r
@@ -55,17 +60,12 @@ namespace KancolleSniffer
             {\r
                 _prevBattleState = _sniffer.Battle.BattleState;\r
             }\r
-            if (url.EndsWith("api_port/port"))\r
-                _battleApiLog.Clear();\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
-                RemoveUnwantedInformation(ref logs[1], ref logs[2]);\r
+                Privacy.Remove(ref logs[0], ref logs[1], ref logs[2]);\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
@@ -94,13 +94,13 @@ namespace KancolleSniffer
 \r
         private string HpDiffLog() => string.Join(" ",\r
             from pair in _sniffer.BattleResultStatusDiff\r
-            let assumed = pair.Assumed\r
+            let assumed = pair.Assumed // こちらのFleetはnull\r
             let actual = pair.Actual\r
-            select $"({assumed.Fleet}-{assumed.DeckIndex}) {assumed.NowHp}->{actual.NowHp}");\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
         {\r
-            RemoveUnwantedInformation(ref request, ref response);\r
+            Privacy.Remove(ref url, ref request, ref response);\r
             var version = string.Join(".", Application.ProductVersion.Split('.').Take(2));\r
             var api = CompressApi($"{url}\r\n{request}\r\n{response}");\r
             var result = $"{{{{{{\r\n{DateTime.Now:g} {version}\r\n{exception}\r\n{api}\r\n}}}}}}";\r
@@ -108,14 +108,6 @@ namespace KancolleSniffer
             return result;\r
         }\r
 \r
-        public static void RemoveUnwantedInformation(ref string request, ref string response)\r
-        {\r
-            var token = new Regex("&api%5Ftoken=.+?(?=&|$)|api%5Ftoken=.+?(?:&|$)");\r
-            request = token.Replace(request, "");\r
-            var id = new Regex(@"""api_member_id"":""\d+?"",?|""api_nickname"":"".+?"",?|""api_nickname_id"":""\d+"",?");\r
-            response = id.Replace(response, "");\r
-        }\r
-\r
         private string CompressApi(string api)\r
         {\r
             var output = new MemoryStream();\r