From 154655c35cdfaeee553bfca8f01b0b021ecaf3da Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Domeradzki?= Date: Thu, 28 Mar 2024 12:29:18 +0100 Subject: [PATCH] Update from ASFB --- ArchiSteamFarm/Core/GeneratedRegexes.cs | 3 ++ .../Steam/Integration/SteamUtilities.cs | 43 +++++++++++-------- 2 files changed, 29 insertions(+), 17 deletions(-) diff --git a/ArchiSteamFarm/Core/GeneratedRegexes.cs b/ArchiSteamFarm/Core/GeneratedRegexes.cs index f0b26cbcb..643d59116 100644 --- a/ArchiSteamFarm/Core/GeneratedRegexes.cs +++ b/ArchiSteamFarm/Core/GeneratedRegexes.cs @@ -37,6 +37,9 @@ internal static partial class GeneratedRegexes { [GeneratedRegex(@"\d+", DefaultOptions)] internal static partial Regex Digits(); + [GeneratedRegex(@"EResult (?\d+)$", DefaultOptions)] + internal static partial Regex InventoryEResult(); + [GeneratedRegex(@"[^\u0000-\u007F]+", DefaultOptions)] internal static partial Regex NonAscii(); } diff --git a/ArchiSteamFarm/Steam/Integration/SteamUtilities.cs b/ArchiSteamFarm/Steam/Integration/SteamUtilities.cs index aa9aaafe5..2d677bb97 100644 --- a/ArchiSteamFarm/Steam/Integration/SteamUtilities.cs +++ b/ArchiSteamFarm/Steam/Integration/SteamUtilities.cs @@ -23,6 +23,7 @@ using System; using System.Globalization; +using System.Text.RegularExpressions; using ArchiSteamFarm.Core; using ArchiSteamFarm.Localization; using JetBrains.Annotations; @@ -75,30 +76,38 @@ public static class SteamUtilities { return EResult.Timeout; } - if (errorText.StartsWith("batched request timeout", StringComparison.Ordinal)) { + if (errorText.StartsWith("batched request timeout", StringComparison.Ordinal) || errorText.StartsWith("Failed to send", StringComparison.Ordinal)) { return EResult.RemoteCallFailed; } - int startIndex = errorText.LastIndexOf('('); + string errorCodeText; - if (startIndex < 0) { - ASF.ArchiLogger.LogGenericError(string.Format(CultureInfo.CurrentCulture, Strings.WarningUnknownValuePleaseReport, nameof(errorText), errorText)); + Match match = GeneratedRegexes.InventoryEResult().Match(errorText); - return null; + if (match.Success && match.Groups.TryGetValue("EResult", out Group? groupResult)) { + errorCodeText = groupResult.Value; + } else { + int startIndex = errorText.LastIndexOf('('); + + if (startIndex < 0) { + ASF.ArchiLogger.LogGenericError(string.Format(CultureInfo.CurrentCulture, Strings.WarningUnknownValuePleaseReport, nameof(errorText), errorText)); + + return null; + } + + startIndex++; + + int endIndex = errorText.IndexOf(')', startIndex + 1); + + if (endIndex < 0) { + ASF.ArchiLogger.LogGenericError(string.Format(CultureInfo.CurrentCulture, Strings.WarningUnknownValuePleaseReport, nameof(errorText), errorText)); + + return null; + } + + errorCodeText = errorText[startIndex..endIndex]; } - startIndex++; - - int endIndex = errorText.IndexOf(')', startIndex + 1); - - if (endIndex < 0) { - ASF.ArchiLogger.LogGenericError(string.Format(CultureInfo.CurrentCulture, Strings.WarningUnknownValuePleaseReport, nameof(errorText), errorText)); - - return null; - } - - string errorCodeText = errorText[startIndex..endIndex]; - if (!byte.TryParse(errorCodeText, out byte errorCode)) { ASF.ArchiLogger.LogGenericError(string.Format(CultureInfo.CurrentCulture, Strings.WarningUnknownValuePleaseReport, nameof(errorText), errorText));