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);
}
}