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();
}