From 9024aa74d71fe4c0edbc7d9b7014888544f61dab Mon Sep 17 00:00:00 2001 From: JanuarySnow Date: Sun, 17 May 2026 09:56:32 +0100 Subject: [PATCH] ignore false alarm API limit error in log --- Wabbajack.Reporting/LogDiagnosticService.cs | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/Wabbajack.Reporting/LogDiagnosticService.cs b/Wabbajack.Reporting/LogDiagnosticService.cs index b2279595a..3d013b93d 100644 --- a/Wabbajack.Reporting/LogDiagnosticService.cs +++ b/Wabbajack.Reporting/LogDiagnosticService.cs @@ -3,8 +3,7 @@ using System; using System.Linq; using System.Net.Http; -using Wabbajack.Reporting; - +using System.Text.RegularExpressions; namespace Wabbajack.Reporting; public sealed record DiagnosticResult(string Title, string Body, string? ImagePathOrUrl) @@ -24,6 +23,8 @@ public sealed class LogDiagnosticService : ILogDiagnosticService private readonly IReadOnlyDictionary _tags; private readonly string _baseDir; private static readonly HttpClient _http = new HttpClient(); + private static readonly Regex _positiveRemainingLimit = + new(@"Remaining Limit:\s*[1-9]", RegexOptions.IgnoreCase | RegexOptions.Compiled); public LogDiagnosticService(RemoteTagRepository repo, string? baseDir = null) : this(repo.Tags, baseDir) { } @@ -59,6 +60,16 @@ public DiagnosticResult Analyze(string logText) if (names.Contains("notenoughspace") && names.Contains("path_not_found")) return Build(matches.First(m => m.Tag.Name.Equals("notenoughspace", StringComparison.OrdinalIgnoreCase)).Tag); + // If the "api" tag fired on "Remaining Limit: 0" but a later log line shows >0 then itz not real + var apiEntry = matches.FirstOrDefault(m => m.Tag.Name.Equals("api", StringComparison.OrdinalIgnoreCase)); + if (apiEntry.Tag is not null) + { + var tail = logText[(apiEntry.Index + 1)..]; + if (_positiveRemainingLimit.IsMatch(tail)) + matches.Remove(apiEntry); + } + + if (matches.Count == 0) return DiagnosticResult.None; return Build(matches.MaxBy(m => m.Index).Tag); }