diff --git a/ArchiSteamFarm.OfficialPlugins.SteamTokenDumper/Localization/Strings.Designer.cs b/ArchiSteamFarm.OfficialPlugins.SteamTokenDumper/Localization/Strings.Designer.cs index 6d1b3a507..1c8f33367 100644 --- a/ArchiSteamFarm.OfficialPlugins.SteamTokenDumper/Localization/Strings.Designer.cs +++ b/ArchiSteamFarm.OfficialPlugins.SteamTokenDumper/Localization/Strings.Designer.cs @@ -214,7 +214,7 @@ namespace ArchiSteamFarm.OfficialPlugins.SteamTokenDumper.Localization { } /// - /// Looks up a localized string similar to Submitting a total of registered apps/subs/depots: {0}/{1}/{2}.... + /// Looks up a localized string similar to Submitting a total of registered apps/packages/depots: {0}/{1}/{2}.... /// internal static string SubmissionInProgress { get { @@ -241,12 +241,66 @@ namespace ArchiSteamFarm.OfficialPlugins.SteamTokenDumper.Localization { } /// - /// Looks up a localized string similar to The data has been successfully submitted. The server has registered a total of new apps/subs/depots: {0}/{1}/{2}.. + /// Looks up a localized string similar to The data has been successfully submitted. The server has registered a total of new apps/packages/depots: {0} ({1} verified)/{2} ({3} verified)/{4} ({5} verified).. /// internal static string SubmissionSuccessful { get { return ResourceManager.GetString("SubmissionSuccessful", resourceCulture); } } + + /// + /// Looks up a localized string similar to New apps: {0}. + /// + internal static string SubmissionSuccessfulNewApps { + get { + return ResourceManager.GetString("SubmissionSuccessfulNewApps", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to New depots: {0}. + /// + internal static string SubmissionSuccessfulNewDepots { + get { + return ResourceManager.GetString("SubmissionSuccessfulNewDepots", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to New packages: {0}. + /// + internal static string SubmissionSuccessfulNewPackages { + get { + return ResourceManager.GetString("SubmissionSuccessfulNewPackages", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Verified apps: {0}. + /// + internal static string SubmissionSuccessfulVerifiedApps { + get { + return ResourceManager.GetString("SubmissionSuccessfulVerifiedApps", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Verified depots: {0}. + /// + internal static string SubmissionSuccessfulVerifiedDepots { + get { + return ResourceManager.GetString("SubmissionSuccessfulVerifiedDepots", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Verified packages: {0}. + /// + internal static string SubmissionSuccessfulVerifiedPackages { + get { + return ResourceManager.GetString("SubmissionSuccessfulVerifiedPackages", resourceCulture); + } + } } } diff --git a/ArchiSteamFarm.OfficialPlugins.SteamTokenDumper/Localization/Strings.resx b/ArchiSteamFarm.OfficialPlugins.SteamTokenDumper/Localization/Strings.resx index e649f447b..8b869dd66 100644 --- a/ArchiSteamFarm.OfficialPlugins.SteamTokenDumper/Localization/Strings.resx +++ b/ArchiSteamFarm.OfficialPlugins.SteamTokenDumper/Localization/Strings.resx @@ -184,7 +184,7 @@ {0} will be replaced by the name of the config property (e.g. "SteamOwnerID") that the user is expected to set - Submitting a total of registered apps/subs/depots: {0}/{1}/{2}... + Submitting a total of registered apps/packages/depots: {0}/{1}/{2}... {0} will be replaced by the number of app access tokens being submitted, {1} will be replaced by the number of package access tokens being submitted, {2} will be replaced by the number of depot keys being submitted @@ -192,8 +192,32 @@ {0} will be replaced by translated TimeSpan string (such as "53 minutes") - The data has been successfully submitted. The server has registered a total of new apps/subs/depots: {0}/{1}/{2}. - {0} will be replaced by the number of new app access tokens that the server has registered, {1} will be replaced by the number of new package access tokens that the server has registered, {2} will be replaced by the number of new depot keys that the server has registered + The data has been successfully submitted. The server has registered a total of new apps/packages/depots: {0} ({1} verified)/{2} ({3} verified)/{4} ({5} verified). + {0} will be replaced by the number of new app access tokens that the server has registered, {1} will be replaced by the number of verified app access tokens that the server has registered, {2} will be replaced by the number of new package access tokens that the server has registered, {3} will be replaced by the number of verified package access tokens that the server has registered, {4} will be replaced by the number of new depot keys that the server has registered, {5} will be replaced by the number of verified depot keys that the server has registered + + + New apps: {0} + {0} will be replaced by list of the apps (IDs, numbers), separated by a comma + + + Verified apps: {0} + {0} will be replaced by list of the apps (IDs, numbers), separated by a comma + + + New packages: {0} + {0} will be replaced by list of the packages (IDs, numbers), separated by a comma + + + Verified packages: {0} + {0} will be replaced by list of the packages (IDs, numbers), separated by a comma + + + New depots: {0} + {0} will be replaced by list of the depots (IDs, numbers), separated by a comma + + + Verified depots: {0} + {0} will be replaced by list of the depots (IDs, numbers), separated by a comma {0} initialized, the plugin will not resolve any of those: {1}. diff --git a/ArchiSteamFarm.OfficialPlugins.SteamTokenDumper/ResponseData.cs b/ArchiSteamFarm.OfficialPlugins.SteamTokenDumper/ResponseData.cs index e873e52b5..2bfdc19c8 100644 --- a/ArchiSteamFarm.OfficialPlugins.SteamTokenDumper/ResponseData.cs +++ b/ArchiSteamFarm.OfficialPlugins.SteamTokenDumper/ResponseData.cs @@ -19,6 +19,7 @@ // See the License for the specific language governing permissions and // limitations under the License. +using System.Collections.Immutable; using System.Diagnostics.CodeAnalysis; using Newtonsoft.Json; @@ -40,20 +41,23 @@ namespace ArchiSteamFarm.OfficialPlugins.SteamTokenDumper { private ResponseData() { } internal sealed class InternalData { -#pragma warning disable CS0649 // False positive, the field is used during json deserialization [JsonProperty(PropertyName = "new_apps", Required = Required.Always)] - internal readonly uint NewAppsCount; -#pragma warning restore CS0649 // False positive, the field is used during json deserialization + internal readonly ImmutableHashSet NewApps = ImmutableHashSet.Empty; -#pragma warning disable CS0649 // False positive, the field is used during json deserialization [JsonProperty(PropertyName = "new_depots", Required = Required.Always)] - internal readonly uint NewDepotsCount; -#pragma warning restore CS0649 // False positive, the field is used during json deserialization + internal readonly ImmutableHashSet NewDepots = ImmutableHashSet.Empty; -#pragma warning disable CS0649 // False positive, the field is used during json deserialization [JsonProperty(PropertyName = "new_subs", Required = Required.Always)] - internal readonly uint NewSubsCount; -#pragma warning restore CS0649 // False positive, the field is used during json deserialization + internal readonly ImmutableHashSet NewPackages = ImmutableHashSet.Empty; + + [JsonProperty(PropertyName = "verified_apps", Required = Required.Always)] + internal readonly ImmutableHashSet VerifiedApps = ImmutableHashSet.Empty; + + [JsonProperty(PropertyName = "verified_depots", Required = Required.Always)] + internal readonly ImmutableHashSet VerifiedDepots = ImmutableHashSet.Empty; + + [JsonProperty(PropertyName = "verified_subs", Required = Required.Always)] + internal readonly ImmutableHashSet VerifiedPackages = ImmutableHashSet.Empty; [JsonConstructor] private InternalData() { } diff --git a/ArchiSteamFarm.OfficialPlugins.SteamTokenDumper/SharedInfo.cs b/ArchiSteamFarm.OfficialPlugins.SteamTokenDumper/SharedInfo.cs index 99179a533..fe00d3c53 100644 --- a/ArchiSteamFarm.OfficialPlugins.SteamTokenDumper/SharedInfo.cs +++ b/ArchiSteamFarm.OfficialPlugins.SteamTokenDumper/SharedInfo.cs @@ -21,7 +21,7 @@ namespace ArchiSteamFarm.OfficialPlugins.SteamTokenDumper { internal static class SharedInfo { - internal const byte ApiVersion = 1; + internal const byte ApiVersion = 2; internal const byte AppInfosPerSingleRequest = byte.MaxValue; internal const byte MaximumHoursBetweenRefresh = 8; // Per single bot account, makes sense to be 2 or 3 times less than MinimumHoursBetweenUploads internal const byte MaximumMinutesBeforeFirstUpload = 60; // Must be greater or equal to MinimumMinutesBeforeFirstUpload diff --git a/ArchiSteamFarm.OfficialPlugins.SteamTokenDumper/SteamTokenDumperPlugin.cs b/ArchiSteamFarm.OfficialPlugins.SteamTokenDumper/SteamTokenDumperPlugin.cs index 87ff98ab4..4698b326e 100644 --- a/ArchiSteamFarm.OfficialPlugins.SteamTokenDumper/SteamTokenDumperPlugin.cs +++ b/ArchiSteamFarm.OfficialPlugins.SteamTokenDumper/SteamTokenDumperPlugin.cs @@ -531,9 +531,33 @@ namespace ArchiSteamFarm.OfficialPlugins.SteamTokenDumper { return; } - ASF.ArchiLogger.LogGenericInfo(string.Format(CultureInfo.CurrentCulture, Strings.SubmissionSuccessful, response.Content.Data.NewAppsCount, response.Content.Data.NewSubsCount, response.Content.Data.NewDepotsCount)); + ASF.ArchiLogger.LogGenericInfo(string.Format(CultureInfo.CurrentCulture, Strings.SubmissionSuccessful, response.Content.Data.NewApps.Count, response.Content.Data.VerifiedApps.Count, response.Content.Data.NewPackages.Count, response.Content.Data.VerifiedPackages.Count, response.Content.Data.NewDepots.Count, response.Content.Data.VerifiedDepots.Count)); GlobalCache.UpdateSubmittedData(appTokens, packageTokens, depotKeys); + + if (!response.Content.Data.NewApps.IsEmpty) { + ASF.ArchiLogger.LogGenericInfo(string.Format(CultureInfo.CurrentCulture, Strings.SubmissionSuccessfulNewApps, string.Join(", ", response.Content.Data.NewApps))); + } + + if (!response.Content.Data.VerifiedApps.IsEmpty) { + ASF.ArchiLogger.LogGenericInfo(string.Format(CultureInfo.CurrentCulture, Strings.SubmissionSuccessfulVerifiedApps, string.Join(", ", response.Content.Data.VerifiedApps))); + } + + if (!response.Content.Data.NewPackages.IsEmpty) { + ASF.ArchiLogger.LogGenericInfo(string.Format(CultureInfo.CurrentCulture, Strings.SubmissionSuccessfulNewPackages, string.Join(", ", response.Content.Data.NewPackages))); + } + + if (!response.Content.Data.VerifiedPackages.IsEmpty) { + ASF.ArchiLogger.LogGenericInfo(string.Format(CultureInfo.CurrentCulture, Strings.SubmissionSuccessfulVerifiedPackages, string.Join(", ", response.Content.Data.VerifiedPackages))); + } + + if (!response.Content.Data.NewDepots.IsEmpty) { + ASF.ArchiLogger.LogGenericInfo(string.Format(CultureInfo.CurrentCulture, Strings.SubmissionSuccessfulNewDepots, string.Join(", ", response.Content.Data.NewDepots))); + } + + if (!response.Content.Data.VerifiedDepots.IsEmpty) { + ASF.ArchiLogger.LogGenericInfo(string.Format(CultureInfo.CurrentCulture, Strings.SubmissionSuccessfulVerifiedDepots, string.Join(", ", response.Content.Data.VerifiedDepots))); + } } finally { SubmissionSemaphore.Release(); }