// VexTrustGateServiceCollectionExtensions - DI registration // Part of SPRINT_1227_0004_0003: VexTrustGate Policy Integration using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection.Extensions; using StellaOps.Policy.Engine.Confidence; using StellaOps.Policy.Engine.Gates; namespace StellaOps.Policy.Engine.DependencyInjection; /// /// Extension methods for registering VEX trust gate services. /// public static class VexTrustGateServiceCollectionExtensions { /// /// Add VEX trust gate services to the DI container. /// /// The service collection. /// The configuration root. /// The service collection for chaining. public static IServiceCollection AddVexTrustGate( this IServiceCollection services, IConfiguration configuration) { ArgumentNullException.ThrowIfNull(services); ArgumentNullException.ThrowIfNull(configuration); // Bind options services.Configure( configuration.GetSection(VexTrustGateOptions.SectionKey)); // Register gate services.TryAddSingleton(); // Register metrics services.TryAddSingleton(); // Register confidence factor provider services.TryAddSingleton(); return services; } /// /// Add VEX trust gate with custom options. /// /// The service collection. /// Action to configure options. /// The service collection for chaining. public static IServiceCollection AddVexTrustGate( this IServiceCollection services, Action configureOptions) { ArgumentNullException.ThrowIfNull(services); ArgumentNullException.ThrowIfNull(configureOptions); services.Configure(configureOptions); services.TryAddSingleton(); services.TryAddSingleton(); services.TryAddSingleton(); return services; } }