using CM.Authentication.Abstractions; using Microsoft.Extensions.Caching.Memory; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; namespace CM.Authentication; public static class ServiceCollectionExtensions { public static IServiceCollection AddCakemailJwtTokenManager(this IServiceCollection services, string configurationSection = "Cakemail:Authentication") { services.AddOptions() .BindConfiguration(configurationSection); services.AddSingleton(serviceProvider => { var options = serviceProvider.GetRequiredService>(); var httpClientFactory = serviceProvider.GetRequiredService(); var memoryCache = serviceProvider.GetService(); var logger = serviceProvider.GetService>(); return new JwtTokenManagerService(options, httpClientFactory, memoryCache, logger); }); return services; } }