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
{\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
{\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
}\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
\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
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