From 4e382732d925ec6100f615d8b1566fa83addb208 Mon Sep 17 00:00:00 2001 From: Archi Date: Thu, 15 Dec 2022 19:16:28 +0100 Subject: [PATCH] Misc refactor --- .../PeriodicGCPlugin.cs | 3 +- .../Backend.cs | 3 +- .../{Requests => Data}/AnnouncementRequest.cs | 20 ++++---- .../{Requests => Data}/AssetForListing.cs | 2 +- .../{Requests => Data}/AssetInInventory.cs | 2 +- .../{Requests => Data}/HeartBeatRequest.cs | 2 +- .../{Requests => Data}/InventoriesRequest.cs | 2 +- .../{Responses => Data}/ListedUser.cs | 3 +- .../RemoteCommunication.cs | 2 +- .../{RequestData.cs => Data/SubmitRequest.cs} | 6 +-- .../SubmitResponse.cs} | 32 ++----------- .../Data/SubmitResponseData.cs | 47 +++++++++++++++++++ .../SteamTokenDumperConfig.cs | 2 - .../SteamTokenDumperPlugin.cs | 5 +- 14 files changed, 76 insertions(+), 55 deletions(-) rename ArchiSteamFarm.OfficialPlugins.ItemsMatcher/{Requests => Data}/AnnouncementRequest.cs (87%) rename ArchiSteamFarm.OfficialPlugins.ItemsMatcher/{Requests => Data}/AssetForListing.cs (95%) rename ArchiSteamFarm.OfficialPlugins.ItemsMatcher/{Requests => Data}/AssetInInventory.cs (97%) rename ArchiSteamFarm.OfficialPlugins.ItemsMatcher/{Requests => Data}/HeartBeatRequest.cs (96%) rename ArchiSteamFarm.OfficialPlugins.ItemsMatcher/{Requests => Data}/InventoriesRequest.cs (97%) rename ArchiSteamFarm.OfficialPlugins.ItemsMatcher/{Responses => Data}/ListedUser.cs (96%) rename ArchiSteamFarm.OfficialPlugins.SteamTokenDumper/{RequestData.cs => Data/SubmitRequest.cs} (90%) rename ArchiSteamFarm.OfficialPlugins.SteamTokenDumper/{ResponseData.cs => Data/SubmitResponse.cs} (62%) create mode 100644 ArchiSteamFarm.OfficialPlugins.SteamTokenDumper/Data/SubmitResponseData.cs diff --git a/ArchiSteamFarm.CustomPlugins.PeriodicGC/PeriodicGCPlugin.cs b/ArchiSteamFarm.CustomPlugins.PeriodicGC/PeriodicGCPlugin.cs index 44f7104c3..18eca49ee 100644 --- a/ArchiSteamFarm.CustomPlugins.PeriodicGC/PeriodicGCPlugin.cs +++ b/ArchiSteamFarm.CustomPlugins.PeriodicGC/PeriodicGCPlugin.cs @@ -27,11 +27,12 @@ using System.Threading; using System.Threading.Tasks; using ArchiSteamFarm.Core; using ArchiSteamFarm.Plugins.Interfaces; +using JetBrains.Annotations; namespace ArchiSteamFarm.CustomPlugins.PeriodicGC; [Export(typeof(IPlugin))] -[SuppressMessage("ReSharper", "UnusedType.Global")] +[UsedImplicitly] internal sealed class PeriodicGCPlugin : IPlugin { private const byte GCPeriod = 60; // In seconds diff --git a/ArchiSteamFarm.OfficialPlugins.ItemsMatcher/Backend.cs b/ArchiSteamFarm.OfficialPlugins.ItemsMatcher/Backend.cs index 71b2dfd84..58380db9b 100644 --- a/ArchiSteamFarm.OfficialPlugins.ItemsMatcher/Backend.cs +++ b/ArchiSteamFarm.OfficialPlugins.ItemsMatcher/Backend.cs @@ -26,8 +26,7 @@ using System.Net; using System.Threading.Tasks; using ArchiSteamFarm.Core; using ArchiSteamFarm.IPC.Responses; -using ArchiSteamFarm.OfficialPlugins.ItemsMatcher.Requests; -using ArchiSteamFarm.OfficialPlugins.ItemsMatcher.Responses; +using ArchiSteamFarm.OfficialPlugins.ItemsMatcher.Data; using ArchiSteamFarm.Steam; using ArchiSteamFarm.Steam.Data; using ArchiSteamFarm.Steam.Storage; diff --git a/ArchiSteamFarm.OfficialPlugins.ItemsMatcher/Requests/AnnouncementRequest.cs b/ArchiSteamFarm.OfficialPlugins.ItemsMatcher/Data/AnnouncementRequest.cs similarity index 87% rename from ArchiSteamFarm.OfficialPlugins.ItemsMatcher/Requests/AnnouncementRequest.cs rename to ArchiSteamFarm.OfficialPlugins.ItemsMatcher/Data/AnnouncementRequest.cs index 62c27a23e..6e8292823 100644 --- a/ArchiSteamFarm.OfficialPlugins.ItemsMatcher/Requests/AnnouncementRequest.cs +++ b/ArchiSteamFarm.OfficialPlugins.ItemsMatcher/Data/AnnouncementRequest.cs @@ -29,35 +29,35 @@ using JetBrains.Annotations; using Newtonsoft.Json; using SteamKit2; -namespace ArchiSteamFarm.OfficialPlugins.ItemsMatcher.Requests; +namespace ArchiSteamFarm.OfficialPlugins.ItemsMatcher.Data; internal sealed class AnnouncementRequest { [JsonProperty] - internal readonly string? AvatarHash; + private readonly string? AvatarHash; [JsonProperty(Required = Required.Always)] - internal readonly Guid Guid; + private readonly Guid Guid; [JsonProperty(Required = Required.Always)] - internal readonly ImmutableHashSet Inventory; + private readonly ImmutableHashSet Inventory; [JsonProperty(Required = Required.Always)] - internal readonly ImmutableHashSet MatchableTypes; + private readonly ImmutableHashSet MatchableTypes; [JsonProperty(Required = Required.Always)] - internal readonly bool MatchEverything; + private readonly bool MatchEverything; [JsonProperty(Required = Required.Always)] - internal readonly byte MaxTradeHoldDuration; + private readonly byte MaxTradeHoldDuration; [JsonProperty] - internal readonly string? Nickname; + private readonly string? Nickname; [JsonProperty(Required = Required.Always)] - internal readonly ulong SteamID; + private readonly ulong SteamID; [JsonProperty(Required = Required.Always)] - internal readonly string TradeToken; + private readonly string TradeToken; internal AnnouncementRequest(Guid guid, ulong steamID, string tradeToken, IReadOnlyList inventory, IReadOnlyCollection matchableTypes, bool matchEverything, byte maxTradeHoldDuration, string? nickname = null, string? avatarHash = null) { if (guid == Guid.Empty) { diff --git a/ArchiSteamFarm.OfficialPlugins.ItemsMatcher/Requests/AssetForListing.cs b/ArchiSteamFarm.OfficialPlugins.ItemsMatcher/Data/AssetForListing.cs similarity index 95% rename from ArchiSteamFarm.OfficialPlugins.ItemsMatcher/Requests/AssetForListing.cs rename to ArchiSteamFarm.OfficialPlugins.ItemsMatcher/Data/AssetForListing.cs index ffce9056e..5b79f8658 100644 --- a/ArchiSteamFarm.OfficialPlugins.ItemsMatcher/Requests/AssetForListing.cs +++ b/ArchiSteamFarm.OfficialPlugins.ItemsMatcher/Data/AssetForListing.cs @@ -23,7 +23,7 @@ using System; using ArchiSteamFarm.Steam.Data; using Newtonsoft.Json; -namespace ArchiSteamFarm.OfficialPlugins.ItemsMatcher.Requests; +namespace ArchiSteamFarm.OfficialPlugins.ItemsMatcher.Data; internal sealed class AssetForListing : AssetInInventory { [JsonProperty(Required = Required.Always)] diff --git a/ArchiSteamFarm.OfficialPlugins.ItemsMatcher/Requests/AssetInInventory.cs b/ArchiSteamFarm.OfficialPlugins.ItemsMatcher/Data/AssetInInventory.cs similarity index 97% rename from ArchiSteamFarm.OfficialPlugins.ItemsMatcher/Requests/AssetInInventory.cs rename to ArchiSteamFarm.OfficialPlugins.ItemsMatcher/Data/AssetInInventory.cs index 2381bba11..26d54b8b6 100644 --- a/ArchiSteamFarm.OfficialPlugins.ItemsMatcher/Requests/AssetInInventory.cs +++ b/ArchiSteamFarm.OfficialPlugins.ItemsMatcher/Data/AssetInInventory.cs @@ -23,7 +23,7 @@ using System; using ArchiSteamFarm.Steam.Data; using Newtonsoft.Json; -namespace ArchiSteamFarm.OfficialPlugins.ItemsMatcher.Requests; +namespace ArchiSteamFarm.OfficialPlugins.ItemsMatcher.Data; internal class AssetInInventory { [JsonProperty(Required = Required.Always)] diff --git a/ArchiSteamFarm.OfficialPlugins.ItemsMatcher/Requests/HeartBeatRequest.cs b/ArchiSteamFarm.OfficialPlugins.ItemsMatcher/Data/HeartBeatRequest.cs similarity index 96% rename from ArchiSteamFarm.OfficialPlugins.ItemsMatcher/Requests/HeartBeatRequest.cs rename to ArchiSteamFarm.OfficialPlugins.ItemsMatcher/Data/HeartBeatRequest.cs index e20b2e2dd..3e57fea1e 100644 --- a/ArchiSteamFarm.OfficialPlugins.ItemsMatcher/Requests/HeartBeatRequest.cs +++ b/ArchiSteamFarm.OfficialPlugins.ItemsMatcher/Data/HeartBeatRequest.cs @@ -23,7 +23,7 @@ using System; using Newtonsoft.Json; using SteamKit2; -namespace ArchiSteamFarm.OfficialPlugins.ItemsMatcher.Requests; +namespace ArchiSteamFarm.OfficialPlugins.ItemsMatcher.Data; internal sealed class HeartBeatRequest { [JsonProperty(Required = Required.Always)] diff --git a/ArchiSteamFarm.OfficialPlugins.ItemsMatcher/Requests/InventoriesRequest.cs b/ArchiSteamFarm.OfficialPlugins.ItemsMatcher/Data/InventoriesRequest.cs similarity index 97% rename from ArchiSteamFarm.OfficialPlugins.ItemsMatcher/Requests/InventoriesRequest.cs rename to ArchiSteamFarm.OfficialPlugins.ItemsMatcher/Data/InventoriesRequest.cs index fb4d2a07d..b0b409706 100644 --- a/ArchiSteamFarm.OfficialPlugins.ItemsMatcher/Requests/InventoriesRequest.cs +++ b/ArchiSteamFarm.OfficialPlugins.ItemsMatcher/Data/InventoriesRequest.cs @@ -28,7 +28,7 @@ using ArchiSteamFarm.Steam.Storage; using Newtonsoft.Json; using SteamKit2; -namespace ArchiSteamFarm.OfficialPlugins.ItemsMatcher.Requests; +namespace ArchiSteamFarm.OfficialPlugins.ItemsMatcher.Data; internal sealed class InventoriesRequest { [JsonProperty(Required = Required.Always)] diff --git a/ArchiSteamFarm.OfficialPlugins.ItemsMatcher/Responses/ListedUser.cs b/ArchiSteamFarm.OfficialPlugins.ItemsMatcher/Data/ListedUser.cs similarity index 96% rename from ArchiSteamFarm.OfficialPlugins.ItemsMatcher/Responses/ListedUser.cs rename to ArchiSteamFarm.OfficialPlugins.ItemsMatcher/Data/ListedUser.cs index 084f6ac6f..2118b8216 100644 --- a/ArchiSteamFarm.OfficialPlugins.ItemsMatcher/Responses/ListedUser.cs +++ b/ArchiSteamFarm.OfficialPlugins.ItemsMatcher/Data/ListedUser.cs @@ -21,11 +21,10 @@ using System.Collections.Immutable; using System.Diagnostics.CodeAnalysis; -using ArchiSteamFarm.OfficialPlugins.ItemsMatcher.Requests; using ArchiSteamFarm.Steam.Data; using Newtonsoft.Json; -namespace ArchiSteamFarm.OfficialPlugins.ItemsMatcher.Responses; +namespace ArchiSteamFarm.OfficialPlugins.ItemsMatcher.Data; #pragma warning disable CA1812 // False positive, the class is used during json deserialization [SuppressMessage("ReSharper", "ClassCannotBeInstantiated")] diff --git a/ArchiSteamFarm.OfficialPlugins.ItemsMatcher/RemoteCommunication.cs b/ArchiSteamFarm.OfficialPlugins.ItemsMatcher/RemoteCommunication.cs index 8eb4975e4..175508f5f 100644 --- a/ArchiSteamFarm.OfficialPlugins.ItemsMatcher/RemoteCommunication.cs +++ b/ArchiSteamFarm.OfficialPlugins.ItemsMatcher/RemoteCommunication.cs @@ -29,8 +29,8 @@ using System.Net.Http; using System.Threading; using System.Threading.Tasks; using ArchiSteamFarm.Core; +using ArchiSteamFarm.OfficialPlugins.ItemsMatcher.Data; using ArchiSteamFarm.OfficialPlugins.ItemsMatcher.Localization; -using ArchiSteamFarm.OfficialPlugins.ItemsMatcher.Responses; using ArchiSteamFarm.Steam; using ArchiSteamFarm.Steam.Cards; using ArchiSteamFarm.Steam.Data; diff --git a/ArchiSteamFarm.OfficialPlugins.SteamTokenDumper/RequestData.cs b/ArchiSteamFarm.OfficialPlugins.SteamTokenDumper/Data/SubmitRequest.cs similarity index 90% rename from ArchiSteamFarm.OfficialPlugins.SteamTokenDumper/RequestData.cs rename to ArchiSteamFarm.OfficialPlugins.SteamTokenDumper/Data/SubmitRequest.cs index 3a5782284..e6ef7aa80 100644 --- a/ArchiSteamFarm.OfficialPlugins.SteamTokenDumper/RequestData.cs +++ b/ArchiSteamFarm.OfficialPlugins.SteamTokenDumper/Data/SubmitRequest.cs @@ -27,9 +27,9 @@ using ArchiSteamFarm.Core; using Newtonsoft.Json; using SteamKit2; -namespace ArchiSteamFarm.OfficialPlugins.SteamTokenDumper; +namespace ArchiSteamFarm.OfficialPlugins.SteamTokenDumper.Data; -internal sealed class RequestData { +internal sealed class SubmitRequest { [JsonProperty("guid", Required = Required.Always)] private static string Guid => ASF.GlobalDatabase?.Identifier.ToString("N") ?? throw new InvalidOperationException(nameof(ASF.GlobalDatabase.Identifier)); @@ -53,7 +53,7 @@ internal sealed class RequestData { [JsonProperty("steamid", Required = Required.Always)] private string SteamIDText => new SteamID(SteamID).Render(); - internal RequestData(ulong steamID, IReadOnlyCollection> apps, IReadOnlyCollection> accessTokens, IReadOnlyCollection> depots) { + internal SubmitRequest(ulong steamID, IReadOnlyCollection> apps, IReadOnlyCollection> accessTokens, IReadOnlyCollection> depots) { if ((steamID == 0) || !new SteamID(steamID).IsIndividualAccount) { throw new ArgumentOutOfRangeException(nameof(steamID)); } diff --git a/ArchiSteamFarm.OfficialPlugins.SteamTokenDumper/ResponseData.cs b/ArchiSteamFarm.OfficialPlugins.SteamTokenDumper/Data/SubmitResponse.cs similarity index 62% rename from ArchiSteamFarm.OfficialPlugins.SteamTokenDumper/ResponseData.cs rename to ArchiSteamFarm.OfficialPlugins.SteamTokenDumper/Data/SubmitResponse.cs index a7ad80dab..5d2e71cd4 100644 --- a/ArchiSteamFarm.OfficialPlugins.SteamTokenDumper/ResponseData.cs +++ b/ArchiSteamFarm.OfficialPlugins.SteamTokenDumper/Data/SubmitResponse.cs @@ -19,18 +19,17 @@ // 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; -namespace ArchiSteamFarm.OfficialPlugins.SteamTokenDumper; +namespace ArchiSteamFarm.OfficialPlugins.SteamTokenDumper.Data; #pragma warning disable CA1812 // False positive, the class is used during json deserialization [SuppressMessage("ReSharper", "ClassCannotBeInstantiated")] -internal sealed class ResponseData { +internal sealed class SubmitResponse { #pragma warning disable CS0649 // False positive, the field is used during json deserialization [JsonProperty("data", Required = Required.DisallowNull)] - internal readonly InternalData? Data; + internal readonly SubmitResponseData? Data; #pragma warning restore CS0649 // False positive, the field is used during json deserialization #pragma warning disable CS0649 // False positive, the field is used during json deserialization @@ -39,29 +38,6 @@ internal sealed class ResponseData { #pragma warning restore CS0649 // False positive, the field is used during json deserialization [JsonConstructor] - private ResponseData() { } - - internal sealed class InternalData { - [JsonProperty("new_apps", Required = Required.Always)] - internal readonly ImmutableHashSet NewApps = ImmutableHashSet.Empty; - - [JsonProperty("new_depots", Required = Required.Always)] - internal readonly ImmutableHashSet NewDepots = ImmutableHashSet.Empty; - - [JsonProperty("new_subs", Required = Required.Always)] - internal readonly ImmutableHashSet NewPackages = ImmutableHashSet.Empty; - - [JsonProperty("verified_apps", Required = Required.Always)] - internal readonly ImmutableHashSet VerifiedApps = ImmutableHashSet.Empty; - - [JsonProperty("verified_depots", Required = Required.Always)] - internal readonly ImmutableHashSet VerifiedDepots = ImmutableHashSet.Empty; - - [JsonProperty("verified_subs", Required = Required.Always)] - internal readonly ImmutableHashSet VerifiedPackages = ImmutableHashSet.Empty; - - [JsonConstructor] - private InternalData() { } - } + private SubmitResponse() { } } #pragma warning restore CA1812 // False positive, the class is used during json deserialization diff --git a/ArchiSteamFarm.OfficialPlugins.SteamTokenDumper/Data/SubmitResponseData.cs b/ArchiSteamFarm.OfficialPlugins.SteamTokenDumper/Data/SubmitResponseData.cs new file mode 100644 index 000000000..085fa715c --- /dev/null +++ b/ArchiSteamFarm.OfficialPlugins.SteamTokenDumper/Data/SubmitResponseData.cs @@ -0,0 +1,47 @@ +// _ _ _ ____ _ _____ +// / \ _ __ ___ | |__ (_)/ ___| | |_ ___ __ _ _ __ ___ | ___|__ _ _ __ _ __ ___ +// / _ \ | '__|/ __|| '_ \ | |\___ \ | __|/ _ \ / _` || '_ ` _ \ | |_ / _` || '__|| '_ ` _ \ +// / ___ \ | | | (__ | | | || | ___) || |_| __/| (_| || | | | | || _|| (_| || | | | | | | | +// /_/ \_\|_| \___||_| |_||_||____/ \__|\___| \__,_||_| |_| |_||_| \__,_||_| |_| |_| |_| +// | +// Copyright 2015-2022 Ɓukasz "JustArchi" Domeradzki +// Contact: JustArchi@JustArchi.net +// | +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// | +// http://www.apache.org/licenses/LICENSE-2.0 +// | +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +using System.Collections.Immutable; +using Newtonsoft.Json; + +namespace ArchiSteamFarm.OfficialPlugins.SteamTokenDumper.Data; + +#pragma warning disable CA1812 // False positive, the class is used during json deserialization +internal sealed class SubmitResponseData { + [JsonProperty("new_apps", Required = Required.Always)] + internal readonly ImmutableHashSet NewApps = ImmutableHashSet.Empty; + + [JsonProperty("new_depots", Required = Required.Always)] + internal readonly ImmutableHashSet NewDepots = ImmutableHashSet.Empty; + + [JsonProperty("new_subs", Required = Required.Always)] + internal readonly ImmutableHashSet NewPackages = ImmutableHashSet.Empty; + + [JsonProperty("verified_apps", Required = Required.Always)] + internal readonly ImmutableHashSet VerifiedApps = ImmutableHashSet.Empty; + + [JsonProperty("verified_depots", Required = Required.Always)] + internal readonly ImmutableHashSet VerifiedDepots = ImmutableHashSet.Empty; + + [JsonProperty("verified_subs", Required = Required.Always)] + internal readonly ImmutableHashSet VerifiedPackages = ImmutableHashSet.Empty; +} +#pragma warning restore CA1812 // False positive, the class is used during json deserialization diff --git a/ArchiSteamFarm.OfficialPlugins.SteamTokenDumper/SteamTokenDumperConfig.cs b/ArchiSteamFarm.OfficialPlugins.SteamTokenDumper/SteamTokenDumperConfig.cs index bb949b3bd..169b5aaa5 100644 --- a/ArchiSteamFarm.OfficialPlugins.SteamTokenDumper/SteamTokenDumperConfig.cs +++ b/ArchiSteamFarm.OfficialPlugins.SteamTokenDumper/SteamTokenDumperConfig.cs @@ -20,13 +20,11 @@ // limitations under the License. using System.Collections.Immutable; -using System.Diagnostics.CodeAnalysis; using ArchiSteamFarm.IPC.Integration; using Newtonsoft.Json; namespace ArchiSteamFarm.OfficialPlugins.SteamTokenDumper; -[SuppressMessage("ReSharper", "ClassCannotBeInstantiated")] public sealed class SteamTokenDumperConfig { [JsonProperty(Required = Required.DisallowNull)] public bool Enabled { get; internal set; } diff --git a/ArchiSteamFarm.OfficialPlugins.SteamTokenDumper/SteamTokenDumperPlugin.cs b/ArchiSteamFarm.OfficialPlugins.SteamTokenDumper/SteamTokenDumperPlugin.cs index 1e1586c0b..486683728 100644 --- a/ArchiSteamFarm.OfficialPlugins.SteamTokenDumper/SteamTokenDumperPlugin.cs +++ b/ArchiSteamFarm.OfficialPlugins.SteamTokenDumper/SteamTokenDumperPlugin.cs @@ -30,6 +30,7 @@ using System.Net; using System.Threading; using System.Threading.Tasks; using ArchiSteamFarm.Core; +using ArchiSteamFarm.OfficialPlugins.SteamTokenDumper.Data; using ArchiSteamFarm.OfficialPlugins.SteamTokenDumper.Localization; using ArchiSteamFarm.Plugins; using ArchiSteamFarm.Plugins.Interfaces; @@ -526,11 +527,11 @@ internal sealed class SteamTokenDumperPlugin : OfficialPlugin, IASF, IBot, IBotC } Uri request = new($"{SharedInfo.ServerURL}/submit"); - RequestData requestData = new(contributorSteamID, appTokens, packageTokens, depotKeys); + SubmitRequest data = new(contributorSteamID, appTokens, packageTokens, depotKeys); ASF.ArchiLogger.LogGenericInfo(string.Format(CultureInfo.CurrentCulture, Strings.SubmissionInProgress, appTokens.Count, packageTokens.Count, depotKeys.Count)); - ObjectResponse? response = await ASF.WebBrowser.UrlPostToJsonObject(request, data: requestData, requestOptions: WebBrowser.ERequestOptions.ReturnClientErrors | WebBrowser.ERequestOptions.AllowInvalidBodyOnErrors).ConfigureAwait(false); + ObjectResponse? response = await ASF.WebBrowser.UrlPostToJsonObject(request, data: data, requestOptions: WebBrowser.ERequestOptions.ReturnClientErrors | WebBrowser.ERequestOptions.AllowInvalidBodyOnErrors).ConfigureAwait(false); if (response == null) { ASF.ArchiLogger.LogGenericWarning(ArchiSteamFarm.Localization.Strings.WarningFailed);