using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using LCU.Library.Internal.ApiSecurity.Models; namespace LCU.Library.Internal.ApiSecurity; public static class ServiceCollectionExtensions { /// /// Adds required API Security services. /// /// The service collection that API Security services are added to. /// A that can be used to customize API Security functionality. public static IApiSecurityBuilder AddApiKeySecurity(this IServiceCollection services, IConfiguration configuration) { services.AddLogging(); //TODO: Move this functionality from binding a config to making a call to an API Security API, only hold config in memory instead of file system //This is less of a concern for containerized apps but still not ideal since the credentials will still be on the containers file system var apiSecurityConfiguration = new ApiSecurityConfiguration(); configuration.GetSection("ApiSecurityConfiguration").Bind(apiSecurityConfiguration); services.AddSingleton(apiSecurityConfiguration); return new ApiSecurityBuilder(services); } }