|
1 | 1 | using Newtonsoft.Json; |
2 | 2 | using Newtonsoft.Json.Linq; |
| 3 | +using System.Text.Json.Nodes; |
3 | 4 | using AppResources = BD.WTTS.Client.Resources.Strings; |
4 | 5 |
|
5 | 6 | namespace BD.WTTS.Services.Implementation; |
@@ -515,7 +516,47 @@ public async ValueTask<bool> CurrnetUserAdd(string name, PlatformAccount platfor |
515 | 516 | if (js == null) |
516 | 517 | continue; |
517 | 518 |
|
518 | | - var originalValue = js.SelectToken(selector); |
| 519 | + JToken? originalValue = null; |
| 520 | + |
| 521 | + try |
| 522 | + { |
| 523 | + originalValue = js.SelectToken(selector); |
| 524 | + } |
| 525 | + catch (Exception ex) |
| 526 | + { |
| 527 | + Log.Error(nameof(CurrnetUserAdd), ex, $"Failed to select token: {selector}"); |
| 528 | + } |
| 529 | + |
| 530 | + if (originalValue == null) |
| 531 | + { |
| 532 | + // 尝试以数组形式再次寻找 |
| 533 | + try |
| 534 | + { |
| 535 | + var tokens = js.SelectTokens(selector); |
| 536 | + |
| 537 | + //暂时将就写一个临时的战网处理方法解决问题 |
| 538 | + if (platform.Platform == ThirdpartyPlatform.BattleNet) |
| 539 | + { |
| 540 | + originalValue = tokens.FirstOrDefault(x => |
| 541 | + { |
| 542 | + var temp = x.Parent?.Parent?.Parent?.Parent?["Path"]?.Value<string>(); |
| 543 | + var temp2 = platform.FolderPath; |
| 544 | + if (temp != null && temp2 != null) |
| 545 | + return string.Equals( |
| 546 | + temp.TrimEnd(Path.DirectorySeparatorChar, Path.AltDirectorySeparatorChar), |
| 547 | + temp2.TrimEnd(Path.DirectorySeparatorChar, Path.AltDirectorySeparatorChar), |
| 548 | + StringComparison.OrdinalIgnoreCase); |
| 549 | + return false; |
| 550 | + }); |
| 551 | + } |
| 552 | + originalValue ??= tokens.FirstOrDefault(); |
| 553 | + } |
| 554 | + catch (Exception ex) |
| 555 | + { |
| 556 | + Log.Error(nameof(CurrnetUserAdd), ex, $"Failed to select tokens: {selector}"); |
| 557 | + } |
| 558 | + } |
| 559 | + |
519 | 560 | if (originalValue == null) |
520 | 561 | continue; |
521 | 562 |
|
|
0 commit comments