From 05f1175759a0fe578be7b07712522c562172ca46 Mon Sep 17 00:00:00 2001 From: Albie Date: Tue, 13 Oct 2020 17:25:50 +0100 Subject: [PATCH 1/2] refactor helpers to utils, downgrade to netstd2 and add missing math helpers --- .../Deserializers/SeasonStatsDeserializer.cs | 3 +- .../Data/Requests/AccountInfoRequest.cs | 6 +- .../Data/Requests/AccountLoginInfoRequests.cs | 4 +- .../Data/Requests/Base/BasicStatsRequest.cs | 2 +- .../Requests/Base/PlatformSpecificRequest.cs | 2 +- .../Data/Requests/PlayerLevelStatsRequest.cs | 2 +- .../Data/Requests/SeasonStatsRequest.cs | 2 +- .../DragonFruit.Six.API.csproj | 3 +- DragonFruit.Six.API/Utils/MathUtils.cs | 77 +++++++++++++++++++ .../{Helpers => Utils}/OperatorData.cs | 0 .../{Helpers => Utils}/PlatformParser.cs | 2 +- .../{Helpers => Utils}/UbisoftIdentifiers.cs | 0 .../UbisoftIdentifiers_Enumerated.cs | 0 13 files changed, 91 insertions(+), 12 deletions(-) create mode 100644 DragonFruit.Six.API/Utils/MathUtils.cs rename DragonFruit.Six.API/{Helpers => Utils}/OperatorData.cs (100%) rename DragonFruit.Six.API/{Helpers => Utils}/PlatformParser.cs (96%) rename DragonFruit.Six.API/{Helpers => Utils}/UbisoftIdentifiers.cs (100%) rename DragonFruit.Six.API/{Helpers => Utils}/UbisoftIdentifiers_Enumerated.cs (100%) diff --git a/DragonFruit.Six.API/Data/Deserializers/SeasonStatsDeserializer.cs b/DragonFruit.Six.API/Data/Deserializers/SeasonStatsDeserializer.cs index bdd6ab44..2a5f8c9e 100644 --- a/DragonFruit.Six.API/Data/Deserializers/SeasonStatsDeserializer.cs +++ b/DragonFruit.Six.API/Data/Deserializers/SeasonStatsDeserializer.cs @@ -5,6 +5,7 @@ using DragonFruit.Common.Data.Extensions; using DragonFruit.Six.API.Data.Strings; using DragonFruit.Six.API.Enums; +using DragonFruit.Six.API.Helpers; using Newtonsoft.Json.Linq; namespace DragonFruit.Six.API.Data.Deserializers @@ -31,7 +32,7 @@ public static SeasonStats DeserializeSeasonStatsFor(this JObject jObject, string Wins = json.GetUInt(Seasonal.Wins), Losses = json.GetUInt(Seasonal.Losses), Abandons = json.GetUInt(Seasonal.Abandons), - WL = json.GetFloat(Seasonal.Wins, 1) / Math.Clamp(json.GetFloat(Seasonal.Losses) + json.GetFloat(Seasonal.Abandons), 1, float.MaxValue), + WL = json.GetFloat(Seasonal.Wins, 1) / MathUtils.Clamp(json.GetFloat(Seasonal.Losses) + json.GetFloat(Seasonal.Abandons), 1, float.MaxValue), Rank = json.GetUInt(Seasonal.Rank), MaxRank = json.GetUInt(Seasonal.MaxRank), diff --git a/DragonFruit.Six.API/Data/Requests/AccountInfoRequest.cs b/DragonFruit.Six.API/Data/Requests/AccountInfoRequest.cs index fdf3a2eb..0e1860e0 100644 --- a/DragonFruit.Six.API/Data/Requests/AccountInfoRequest.cs +++ b/DragonFruit.Six.API/Data/Requests/AccountInfoRequest.cs @@ -43,12 +43,12 @@ public AccountInfoRequest(Platform platform, LookupMethod lookupMethod, IEnumera public string PlatformValue => PlatformParser.PlatformIdentifierFor(Platform); [QueryParameter("nameOnPlatform")] - public string PlayerNames => LookupMethod == LookupMethod.Name ? string.Join(',', LookupQuery) : null; + public string PlayerNames => LookupMethod == LookupMethod.Name ? string.Join(",", LookupQuery) : null; [QueryParameter("idOnPlatform")] - public string PlatformIds => LookupMethod == LookupMethod.PlatformId ? string.Join(',', LookupQuery) : null; + public string PlatformIds => LookupMethod == LookupMethod.PlatformId ? string.Join(",", LookupQuery) : null; [QueryParameter("userId")] - public string UbisoftIds => LookupMethod == LookupMethod.UserId ? string.Join(',', LookupQuery) : null; + public string UbisoftIds => LookupMethod == LookupMethod.UserId ? string.Join(",", LookupQuery) : null; } } diff --git a/DragonFruit.Six.API/Data/Requests/AccountLoginInfoRequests.cs b/DragonFruit.Six.API/Data/Requests/AccountLoginInfoRequests.cs index 61593fa7..9b14c9da 100644 --- a/DragonFruit.Six.API/Data/Requests/AccountLoginInfoRequests.cs +++ b/DragonFruit.Six.API/Data/Requests/AccountLoginInfoRequests.cs @@ -29,9 +29,9 @@ public AccountLoginInfoRequest(IEnumerable profiles) public IEnumerable Accounts { get; set; } [QueryParameter("applicationIds")] - public string AppIdString => string.Join(',', AppIds); + public string AppIdString => string.Join(",", AppIds); [QueryParameter("profileIds")] - public string ProfileIdString => string.Join(',', Accounts.Select(x => x.Identifiers.Profile)); + public string ProfileIdString => string.Join(",", Accounts.Select(x => x.Identifiers.Profile)); } } diff --git a/DragonFruit.Six.API/Data/Requests/Base/BasicStatsRequest.cs b/DragonFruit.Six.API/Data/Requests/Base/BasicStatsRequest.cs index 1a9785a9..62e5178e 100644 --- a/DragonFruit.Six.API/Data/Requests/Base/BasicStatsRequest.cs +++ b/DragonFruit.Six.API/Data/Requests/Base/BasicStatsRequest.cs @@ -29,6 +29,6 @@ public BasicStatsRequest(IEnumerable accounts) public override string AccountIdString => base.AccountIdString; [QueryParameter("statistics")] - public string CompiledStats => string.Join(',', Stats); + public string CompiledStats => string.Join(",", Stats); } } diff --git a/DragonFruit.Six.API/Data/Requests/Base/PlatformSpecificRequest.cs b/DragonFruit.Six.API/Data/Requests/Base/PlatformSpecificRequest.cs index d533a59a..6023943a 100644 --- a/DragonFruit.Six.API/Data/Requests/Base/PlatformSpecificRequest.cs +++ b/DragonFruit.Six.API/Data/Requests/Base/PlatformSpecificRequest.cs @@ -31,6 +31,6 @@ protected PlatformSpecificRequest(IEnumerable accounts) public IEnumerable AccountIds => Accounts.Select(x => x.Identifiers.Profile); - public virtual string AccountIdString => string.Join(',', AccountIds); + public virtual string AccountIdString => string.Join(",", AccountIds); } } diff --git a/DragonFruit.Six.API/Data/Requests/PlayerLevelStatsRequest.cs b/DragonFruit.Six.API/Data/Requests/PlayerLevelStatsRequest.cs index ac5083c1..e615fff4 100644 --- a/DragonFruit.Six.API/Data/Requests/PlayerLevelStatsRequest.cs +++ b/DragonFruit.Six.API/Data/Requests/PlayerLevelStatsRequest.cs @@ -25,6 +25,6 @@ public PlayerLevelStatsRequest(IEnumerable accounts) } [QueryParameter("profile_ids")] - public string CompiledAccounts => string.Join(',', Accounts.Select(x => x.Identifiers.Profile)); + public string CompiledAccounts => string.Join(",", Accounts.Select(x => x.Identifiers.Profile)); } } diff --git a/DragonFruit.Six.API/Data/Requests/SeasonStatsRequest.cs b/DragonFruit.Six.API/Data/Requests/SeasonStatsRequest.cs index 03e019f4..9be5fc10 100644 --- a/DragonFruit.Six.API/Data/Requests/SeasonStatsRequest.cs +++ b/DragonFruit.Six.API/Data/Requests/SeasonStatsRequest.cs @@ -42,6 +42,6 @@ public SeasonStatsRequest(IEnumerable accounts, int seasonId, strin public string Region { get; set; } = "EMEA"; [QueryParameter("profile_ids")] - public string CompiledAccounts => string.Join(',', Accounts.Select(x => x.Identifiers.Profile)); + public string CompiledAccounts => string.Join(",", Accounts.Select(x => x.Identifiers.Profile)); } } diff --git a/DragonFruit.Six.API/DragonFruit.Six.API.csproj b/DragonFruit.Six.API/DragonFruit.Six.API.csproj index 794c8998..2c645b47 100644 --- a/DragonFruit.Six.API/DragonFruit.Six.API.csproj +++ b/DragonFruit.Six.API/DragonFruit.Six.API.csproj @@ -1,7 +1,7 @@  - netstandard2.1 + netstandard2.0 DragonFruit.Six.API DragonFruit.Six.API Dragon6.API @@ -17,6 +17,7 @@ true r6stats, r6api, r6, rainbowsix DragonFruit Network + latest diff --git a/DragonFruit.Six.API/Utils/MathUtils.cs b/DragonFruit.Six.API/Utils/MathUtils.cs new file mode 100644 index 00000000..20d1c270 --- /dev/null +++ b/DragonFruit.Six.API/Utils/MathUtils.cs @@ -0,0 +1,77 @@ +// Dragon6 API Copyright 2020 DragonFruit Network +// Licensed under Apache-2. Please refer to the LICENSE file for more info + +using System; +using System.Runtime.CompilerServices; + +namespace DragonFruit.Six.API.Helpers +{ + /// + /// Functions from the class from .NET Standard 2 + /// + /// + /// Taken from https://source.dot.net/#System.Private.CoreLib/Math.cs (MIT) + /// + internal static class MathUtils + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double Clamp(double value, double min, double max) + { + if (min > max) + { + throw new ArgumentException(); + } + + if (value < min) + { + return min; + } + else if (value > max) + { + return max; + } + + return value; + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int Clamp(int value, int min, int max) + { + if (min > max) + { + throw new ArgumentException(); + } + + if (value < min) + { + return min; + } + else if (value > max) + { + return max; + } + + return value; + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float Clamp(float value, float min, float max) + { + if (min > max) + { + throw new ArgumentException(); + } + + if (value < min) + { + return min; + } + else if (value > max) + { + return max; + } + + return value; + } + } +} diff --git a/DragonFruit.Six.API/Helpers/OperatorData.cs b/DragonFruit.Six.API/Utils/OperatorData.cs similarity index 100% rename from DragonFruit.Six.API/Helpers/OperatorData.cs rename to DragonFruit.Six.API/Utils/OperatorData.cs diff --git a/DragonFruit.Six.API/Helpers/PlatformParser.cs b/DragonFruit.Six.API/Utils/PlatformParser.cs similarity index 96% rename from DragonFruit.Six.API/Helpers/PlatformParser.cs rename to DragonFruit.Six.API/Utils/PlatformParser.cs index ccd3786b..6b84385a 100644 --- a/DragonFruit.Six.API/Helpers/PlatformParser.cs +++ b/DragonFruit.Six.API/Utils/PlatformParser.cs @@ -14,7 +14,7 @@ public static class PlatformParser /// public static Platform GetPlatform(string platformId) { - return Enum.Parse(platformId, true); + return (Platform)Enum.Parse(typeof(Platform), platformId, true); } /// diff --git a/DragonFruit.Six.API/Helpers/UbisoftIdentifiers.cs b/DragonFruit.Six.API/Utils/UbisoftIdentifiers.cs similarity index 100% rename from DragonFruit.Six.API/Helpers/UbisoftIdentifiers.cs rename to DragonFruit.Six.API/Utils/UbisoftIdentifiers.cs diff --git a/DragonFruit.Six.API/Helpers/UbisoftIdentifiers_Enumerated.cs b/DragonFruit.Six.API/Utils/UbisoftIdentifiers_Enumerated.cs similarity index 100% rename from DragonFruit.Six.API/Helpers/UbisoftIdentifiers_Enumerated.cs rename to DragonFruit.Six.API/Utils/UbisoftIdentifiers_Enumerated.cs From 275e78767f5e78a41d32cc33bba87d2e1b030688 Mon Sep 17 00:00:00 2001 From: Albie Date: Tue, 13 Oct 2020 18:44:26 +0100 Subject: [PATCH 2/2] merge and refactor --- DragonFruit.Six.API.Demo/Program.cs | 2 +- DragonFruit.Six.API.Tests.Common/Dragon6DemoClient.cs | 2 +- .../Data/Deserializers/AccountInfoDeserializer.cs | 2 +- .../Data/Deserializers/AccountLoginInfoDeserializer.cs | 2 +- .../Data/Deserializers/SeasonStatsDeserializer.cs | 2 +- DragonFruit.Six.API/Data/Deserializers/TokenDeserializer.cs | 2 +- DragonFruit.Six.API/Data/Requests/AccountInfoRequest.cs | 2 +- DragonFruit.Six.API/Data/Requests/AccountLoginInfoRequests.cs | 2 +- DragonFruit.Six.API/Dragon6Client.cs | 2 +- DragonFruit.Six.API/Endpoints.cs | 2 +- DragonFruit.Six.API/Utils/MathUtils.cs | 2 +- DragonFruit.Six.API/Utils/OperatorData.cs | 2 +- DragonFruit.Six.API/Utils/PlatformParser.cs | 2 +- DragonFruit.Six.API/Utils/UbisoftIdentifiers.cs | 2 +- 14 files changed, 14 insertions(+), 14 deletions(-) diff --git a/DragonFruit.Six.API.Demo/Program.cs b/DragonFruit.Six.API.Demo/Program.cs index 74c1a7d7..2062c4d3 100644 --- a/DragonFruit.Six.API.Demo/Program.cs +++ b/DragonFruit.Six.API.Demo/Program.cs @@ -5,8 +5,8 @@ using System.Threading.Tasks; using DragonFruit.Six.API.Data.Extensions; using DragonFruit.Six.API.Enums; -using DragonFruit.Six.API.Helpers; using DragonFruit.Six.API.Tests.Common; +using DragonFruit.Six.API.Utils; using Newtonsoft.Json; using Newtonsoft.Json.Linq; diff --git a/DragonFruit.Six.API.Tests.Common/Dragon6DemoClient.cs b/DragonFruit.Six.API.Tests.Common/Dragon6DemoClient.cs index aecae058..bec0fe81 100644 --- a/DragonFruit.Six.API.Tests.Common/Dragon6DemoClient.cs +++ b/DragonFruit.Six.API.Tests.Common/Dragon6DemoClient.cs @@ -8,7 +8,7 @@ using DragonFruit.Six.API.Developer.Extensions; using DragonFruit.Six.API.Enums; using DragonFruit.Six.API.Exceptions; -using DragonFruit.Six.API.Helpers; +using DragonFruit.Six.API.Utils; namespace DragonFruit.Six.API.Tests.Common { diff --git a/DragonFruit.Six.API/Data/Deserializers/AccountInfoDeserializer.cs b/DragonFruit.Six.API/Data/Deserializers/AccountInfoDeserializer.cs index e330db1d..52093400 100644 --- a/DragonFruit.Six.API/Data/Deserializers/AccountInfoDeserializer.cs +++ b/DragonFruit.Six.API/Data/Deserializers/AccountInfoDeserializer.cs @@ -5,7 +5,7 @@ using DragonFruit.Common.Data.Extensions; using DragonFruit.Six.API.Data.Containers; using DragonFruit.Six.API.Data.Strings; -using DragonFruit.Six.API.Helpers; +using DragonFruit.Six.API.Utils; using Newtonsoft.Json.Linq; namespace DragonFruit.Six.API.Data.Deserializers diff --git a/DragonFruit.Six.API/Data/Deserializers/AccountLoginInfoDeserializer.cs b/DragonFruit.Six.API/Data/Deserializers/AccountLoginInfoDeserializer.cs index 4f8fbba3..f0e3f897 100644 --- a/DragonFruit.Six.API/Data/Deserializers/AccountLoginInfoDeserializer.cs +++ b/DragonFruit.Six.API/Data/Deserializers/AccountLoginInfoDeserializer.cs @@ -7,7 +7,7 @@ using DragonFruit.Common.Data.Extensions; using DragonFruit.Six.API.Data.Containers; using DragonFruit.Six.API.Data.Strings; -using DragonFruit.Six.API.Helpers; +using DragonFruit.Six.API.Utils; using Newtonsoft.Json.Linq; namespace DragonFruit.Six.API.Data.Deserializers diff --git a/DragonFruit.Six.API/Data/Deserializers/SeasonStatsDeserializer.cs b/DragonFruit.Six.API/Data/Deserializers/SeasonStatsDeserializer.cs index 2a5f8c9e..ed284331 100644 --- a/DragonFruit.Six.API/Data/Deserializers/SeasonStatsDeserializer.cs +++ b/DragonFruit.Six.API/Data/Deserializers/SeasonStatsDeserializer.cs @@ -5,7 +5,7 @@ using DragonFruit.Common.Data.Extensions; using DragonFruit.Six.API.Data.Strings; using DragonFruit.Six.API.Enums; -using DragonFruit.Six.API.Helpers; +using DragonFruit.Six.API.Utils; using Newtonsoft.Json.Linq; namespace DragonFruit.Six.API.Data.Deserializers diff --git a/DragonFruit.Six.API/Data/Deserializers/TokenDeserializer.cs b/DragonFruit.Six.API/Data/Deserializers/TokenDeserializer.cs index 2ac25817..78453eaa 100644 --- a/DragonFruit.Six.API/Data/Deserializers/TokenDeserializer.cs +++ b/DragonFruit.Six.API/Data/Deserializers/TokenDeserializer.cs @@ -5,7 +5,7 @@ using DragonFruit.Six.API.Data.Containers; using DragonFruit.Six.API.Data.Strings; using DragonFruit.Six.API.Data.Tokens; -using DragonFruit.Six.API.Helpers; +using DragonFruit.Six.API.Utils; using Newtonsoft.Json.Linq; namespace DragonFruit.Six.API.Data.Deserializers diff --git a/DragonFruit.Six.API/Data/Requests/AccountInfoRequest.cs b/DragonFruit.Six.API/Data/Requests/AccountInfoRequest.cs index 0e1860e0..d42a41b5 100644 --- a/DragonFruit.Six.API/Data/Requests/AccountInfoRequest.cs +++ b/DragonFruit.Six.API/Data/Requests/AccountInfoRequest.cs @@ -5,7 +5,7 @@ using DragonFruit.Common.Data.Parameters; using DragonFruit.Six.API.Data.Requests.Base; using DragonFruit.Six.API.Enums; -using DragonFruit.Six.API.Helpers; +using DragonFruit.Six.API.Utils; namespace DragonFruit.Six.API.Data.Requests { diff --git a/DragonFruit.Six.API/Data/Requests/AccountLoginInfoRequests.cs b/DragonFruit.Six.API/Data/Requests/AccountLoginInfoRequests.cs index 9b14c9da..1b801eec 100644 --- a/DragonFruit.Six.API/Data/Requests/AccountLoginInfoRequests.cs +++ b/DragonFruit.Six.API/Data/Requests/AccountLoginInfoRequests.cs @@ -5,7 +5,7 @@ using System.Linq; using DragonFruit.Common.Data.Parameters; using DragonFruit.Six.API.Data.Requests.Base; -using DragonFruit.Six.API.Helpers; +using DragonFruit.Six.API.Utils; namespace DragonFruit.Six.API.Data.Requests { diff --git a/DragonFruit.Six.API/Dragon6Client.cs b/DragonFruit.Six.API/Dragon6Client.cs index 1c284404..3c1eca06 100644 --- a/DragonFruit.Six.API/Dragon6Client.cs +++ b/DragonFruit.Six.API/Dragon6Client.cs @@ -10,7 +10,7 @@ using DragonFruit.Six.API.Data.Tokens; using DragonFruit.Six.API.Enums; using DragonFruit.Six.API.Exceptions; -using DragonFruit.Six.API.Helpers; +using DragonFruit.Six.API.Utils; namespace DragonFruit.Six.API { diff --git a/DragonFruit.Six.API/Endpoints.cs b/DragonFruit.Six.API/Endpoints.cs index 66b49015..72461db2 100644 --- a/DragonFruit.Six.API/Endpoints.cs +++ b/DragonFruit.Six.API/Endpoints.cs @@ -3,7 +3,7 @@ using System; using DragonFruit.Six.API.Enums; -using DragonFruit.Six.API.Helpers; +using DragonFruit.Six.API.Utils; namespace DragonFruit.Six.API { diff --git a/DragonFruit.Six.API/Utils/MathUtils.cs b/DragonFruit.Six.API/Utils/MathUtils.cs index 20d1c270..1fa28a31 100644 --- a/DragonFruit.Six.API/Utils/MathUtils.cs +++ b/DragonFruit.Six.API/Utils/MathUtils.cs @@ -4,7 +4,7 @@ using System; using System.Runtime.CompilerServices; -namespace DragonFruit.Six.API.Helpers +namespace DragonFruit.Six.API.Utils { /// /// Functions from the class from .NET Standard 2 diff --git a/DragonFruit.Six.API/Utils/OperatorData.cs b/DragonFruit.Six.API/Utils/OperatorData.cs index ff5e30db..2a15e2d9 100644 --- a/DragonFruit.Six.API/Utils/OperatorData.cs +++ b/DragonFruit.Six.API/Utils/OperatorData.cs @@ -12,7 +12,7 @@ using DragonFruit.Six.API.Enums; using Newtonsoft.Json.Linq; -namespace DragonFruit.Six.API.Helpers +namespace DragonFruit.Six.API.Utils { [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")] public static class OperatorData diff --git a/DragonFruit.Six.API/Utils/PlatformParser.cs b/DragonFruit.Six.API/Utils/PlatformParser.cs index 6b84385a..150f8b8f 100644 --- a/DragonFruit.Six.API/Utils/PlatformParser.cs +++ b/DragonFruit.Six.API/Utils/PlatformParser.cs @@ -5,7 +5,7 @@ using System.Collections.Generic; using DragonFruit.Six.API.Enums; -namespace DragonFruit.Six.API.Helpers +namespace DragonFruit.Six.API.Utils { public static class PlatformParser { diff --git a/DragonFruit.Six.API/Utils/UbisoftIdentifiers.cs b/DragonFruit.Six.API/Utils/UbisoftIdentifiers.cs index ef837204..4026500e 100644 --- a/DragonFruit.Six.API/Utils/UbisoftIdentifiers.cs +++ b/DragonFruit.Six.API/Utils/UbisoftIdentifiers.cs @@ -5,7 +5,7 @@ using System.Collections.Generic; using DragonFruit.Six.API.Enums; -namespace DragonFruit.Six.API.Helpers +namespace DragonFruit.Six.API.Utils { public static class UbisoftIdentifiers {