using System; using System.Collections.Generic; using System.Linq; using StellaOps.Auth.Abstractions; namespace StellaOps.Cartographer.Options; /// /// Applies Cartographer-specific defaults to . /// internal static class CartographerAuthorityOptionsConfigurator { /// /// Ensures required scopes are present and duplicates are removed case-insensitively. /// /// Target options. public static void ApplyDefaults(CartographerAuthorityOptions options) { ArgumentNullException.ThrowIfNull(options); EnsureScope(options.RequiredScopes, StellaOpsScopes.GraphRead); EnsureScope(options.RequiredScopes, StellaOpsScopes.GraphWrite); } private static void EnsureScope(ICollection scopes, string scope) { ArgumentNullException.ThrowIfNull(scopes); ArgumentException.ThrowIfNullOrEmpty(scope); if (scopes.Any(existing => string.Equals(existing, scope, StringComparison.OrdinalIgnoreCase))) { return; } scopes.Add(scope); } }