diff --git a/DragonFruit.Six.Api/Modern/ModernStatsExtensions.cs b/DragonFruit.Six.Api/Modern/ModernStatsExtensions.cs index debfd516..48051462 100644 --- a/DragonFruit.Six.Api/Modern/ModernStatsExtensions.cs +++ b/DragonFruit.Six.Api/Modern/ModernStatsExtensions.cs @@ -12,12 +12,25 @@ using DragonFruit.Six.Api.Modern.Enums; using DragonFruit.Six.Api.Modern.Requests; using DragonFruit.Six.Api.Modern.Utils; +using JetBrains.Annotations; using Newtonsoft.Json.Linq; namespace DragonFruit.Six.Api.Modern { public static class ModernStatsExtensions { + /// + /// Gets the user's recently played maps, with information including K/D, W/L and time alive + /// + /// The to use + /// The to get stats for + /// The to get stats for + /// The to filter stats by + /// The first day to return stats for. Must be within the last 120 days + /// The last day to include stats for. Must be at least 1 day before current UTC time + /// Optional + /// A container with the requested map stats. Will return null if no stats found + [CanBeNull] public static Task>> GetModernMapStatsAsync(this Dragon6Client client, UbisoftAccount account, PlaylistType playlistType = PlaylistType.All, OperatorType operatorType = OperatorType.All, DateTimeOffset? startDate = null, DateTimeOffset? endDate = null, CancellationToken token = default) { var request = new ModernMapStatsRequest(account) @@ -33,6 +46,18 @@ public static Task>> GetMod .ContinueWith(t => t.Result.ProcessData>(request), TaskContinuationOptions.OnlyOnRanToCompletion); } + /// + /// Gets the user's recently played operators, with information including K/D, W/L and time alive + /// + /// The to use + /// The to get stats for + /// The to get stats for + /// The to filter stats by + /// The first day to return stats for. Must be within the last 120 days + /// The last day to include stats for. Must be at least 1 day before current UTC time + /// Optional + /// A container with the requested operator stats. Will return null if no stats found + [CanBeNull] public static Task>> GetModernOperatorStatsAsync(this Dragon6Client client, UbisoftAccount account, PlaylistType playlistType = PlaylistType.All, OperatorType operatorType = OperatorType.All, DateTimeOffset? startDate = null, DateTimeOffset? endDate = null, CancellationToken token = default) { var request = new ModernOperatorStatsRequest(account) @@ -48,6 +73,15 @@ public static Task>> G .ContinueWith(t => t.Result.ProcessData>(request), TaskContinuationOptions.OnlyOnRanToCompletion); } + /// + /// Gets the user's seasonal history + /// + /// The to use + /// The to get stats for + /// The to get stats for + /// Optional + /// A container with all seasons tracked. Will return null if no stats found + [CanBeNull] public static Task>> GetModernSeasonStatsAsync(this Dragon6Client client, UbisoftAccount account, PlaylistType playlistType = PlaylistType.All, CancellationToken token = default) { var request = new ModernSeasonalStatsRequest(account) @@ -59,6 +93,19 @@ public static Task>> Get .ContinueWith(t => t.Result.ProcessData>(request), TaskContinuationOptions.OnlyOnRanToCompletion); } + /// + /// Gets a summary of the user's current activity, with information including K/D, W/L and time alive + /// + /// The to use + /// The to get stats for + /// The to get stats for + /// The to filter stats by + /// The first day to return stats for. Must be within the last 120 days + /// The last day to include stats for. Must be at least 1 day before current UTC time + /// Optional + /// A container with the requested stats. Will return null if no stats found. + /// This returns a collection of items, but is recommended to use FirstOrDefault() to get the correct stats object + [CanBeNull] public static Task>> GetModernStatsSummaryAsync(this Dragon6Client client, UbisoftAccount account, PlaylistType playlistType = PlaylistType.All, OperatorType operatorType = OperatorType.All, DateTimeOffset? startDate = null, DateTimeOffset? endDate = null, CancellationToken token = default) { var request = new ModernStatsSummaryRequest(account) @@ -74,6 +121,18 @@ public static Task>> Ge .ContinueWith(t => t.Result.ProcessData>(request), TaskContinuationOptions.OnlyOnRanToCompletion); } + /// + /// Gets the user's graphs + /// + /// The to use + /// The to get stats for + /// The to get stats for + /// The to filter stats by + /// The first day to return stats for. Must be within the last 120 days + /// The last day to include stats for. Must be at least 1 day before current UTC time + /// Optional + /// A container with the data needed to plot the graphs seen on the ubisoft stats site. Will return null if no stats found + [CanBeNull] public static Task>> GetModernStatsTrendAsync(this Dragon6Client client, UbisoftAccount account, PlaylistType playlistType = PlaylistType.All, OperatorType operatorType = OperatorType.All, DateTimeOffset? startDate = null, DateTimeOffset? endDate = null, CancellationToken token = default) { var request = new ModernStatsTrendRequest(account) @@ -90,6 +149,18 @@ public static Task>> GetM .ContinueWith(t => t.Result.ProcessData>(request), TaskContinuationOptions.OnlyOnRanToCompletion); } + /// + /// Gets the user's recently used weapons + /// + /// The to use + /// The to get stats for + /// The to get stats for + /// The to filter stats by + /// The first day to return stats for. Must be within the last 120 days + /// The last day to include stats for. Must be at least 1 day before current UTC time + /// Optional + /// A container with the requested weapon stats. Will return null if no stats found + [CanBeNull] public static Task> GetModernWeaponStatsAsync(this Dragon6Client client, UbisoftAccount account, PlaylistType playlistType = PlaylistType.All, OperatorType operatorType = OperatorType.All, DateTimeOffset? startDate = null, DateTimeOffset? endDate = null, CancellationToken token = default) { var request = new ModernWeaponStatsRequest(account)