diff --git a/DisCatSharp.Extensions.OAuth2Web/ExtensionMethods.cs b/DisCatSharp.Extensions.OAuth2Web/ExtensionMethods.cs index 4055114..0b1f758 100644 --- a/DisCatSharp.Extensions.OAuth2Web/ExtensionMethods.cs +++ b/DisCatSharp.Extensions.OAuth2Web/ExtensionMethods.cs @@ -26,6 +26,8 @@ using System.Linq; using System.Threading.Tasks; +using DisCatSharp.Entities; + using Microsoft.Extensions.DependencyInjection; // ReSharper disable NullCoalescingConditionIsAlwaysNotNullAccordingToAPIContract @@ -73,8 +75,7 @@ public static async Task> UseOAuth2 var oa2W = shard.GetExtension(); oa2W ??= shard.UseOAuth2Web(new(config) { - StartPort = currentPort, - RedirectUri = $"{baseRedirectUri}s{shard.ShardId}/" + StartPort = currentPort, RedirectUri = $"{baseRedirectUri}s{shard.ShardId}/" }); currentPort++; @@ -124,4 +125,31 @@ public static async Task StopAsync(this IReadOnlyDictionary + /// Checks if all redirect uris are set for the application in the developer portal. + /// Use this function after you've executed . + /// + /// The extensions. + /// The . + /// Whether all required redirect uris are set. + public static bool HasAllRequiredRedirectUrisSet(this IReadOnlyDictionary extensions, DiscordShardedClient client) + => extensions.Values.Select(extension => extension.Configuration.RedirectUri).All(client.CurrentApplication.RedirectUris.Contains); + + /// + /// Gets the required redirect uris for the developer portal. + /// + /// The extensions. + /// The required redirect uris. + public static IReadOnlyList GetRequiredRedirectUris(this IReadOnlyDictionary extensions) + => extensions.Values.Select(extension => extension.Configuration.RedirectUri).ToList().AsReadOnly(); + + /// + /// Checks if all redirect uris are set for the application in the developer portal. + /// Use this function after you've executed . + /// + /// The extension. + /// Whether the required redirect uri is set. + public static bool HasRequiredRedirectUriSet(this OAuth2WebExtension extension) + => extension.Client.CurrentApplication.RedirectUris.Contains(extension.Configuration.RedirectUri); } diff --git a/DisCatSharp.Extensions.OAuth2Web/OAuth2WebConfiguration.cs b/DisCatSharp.Extensions.OAuth2Web/OAuth2WebConfiguration.cs index f5daba2..dbc6f6a 100644 --- a/DisCatSharp.Extensions.OAuth2Web/OAuth2WebConfiguration.cs +++ b/DisCatSharp.Extensions.OAuth2Web/OAuth2WebConfiguration.cs @@ -55,8 +55,8 @@ public class OAuth2WebConfiguration /// If used in sharding, the redirect uri internally appends /// /// Example: Sharded redirect uri: - /// Shard 1 will have the uri http://localhost:StartPort/oauth/s1/. - /// Shard 2 will have the uri http://localhost:StartPort+1/oauth/s2/. + /// Shard 1 will have the uri http://Host:StartPort/oauth/s1/. + /// Shard 2 will have the uri http://Host:StartPort+1/oauth/s2/. /// /// public string RedirectUri { internal get; init; }