diff --git a/src/DigitalData.Auth.API/Program.cs b/src/DigitalData.Auth.API/Program.cs index b84c75c..9d3788f 100644 --- a/src/DigitalData.Auth.API/Program.cs +++ b/src/DigitalData.Auth.API/Program.cs @@ -1,4 +1,5 @@ using DigitalData.Auth.API.Config; +using DigitalData.Auth.API.Services; var builder = WebApplication.CreateBuilder(args); @@ -10,6 +11,7 @@ var apiParams = config.Get() ?? throw new InvalidOperationExcepti // Add services to the container. builder.Services.Configure(config); +builder.Services.AddConsumerApiServiceFromConfiguration(config); builder.Services.AddControllers(); // Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle diff --git a/src/DigitalData.Auth.API/Services/ConsumerApiJsonBasedService.cs b/src/DigitalData.Auth.API/Services/ConfiguredConsumerApiService.cs similarity index 78% rename from src/DigitalData.Auth.API/Services/ConsumerApiJsonBasedService.cs rename to src/DigitalData.Auth.API/Services/ConfiguredConsumerApiService.cs index 3e23c48..0a69dde 100644 --- a/src/DigitalData.Auth.API/Services/ConsumerApiJsonBasedService.cs +++ b/src/DigitalData.Auth.API/Services/ConfiguredConsumerApiService.cs @@ -4,10 +4,10 @@ using Microsoft.Extensions.Options; namespace DigitalData.Auth.API.Services { - public class ConsumerApiJsonBasedService : IConsumerApiService + public class ConfiguredConsumerApiService : IConsumerApiService { private readonly IEnumerable _consumerAPIs; - public ConsumerApiJsonBasedService(IOptions> options) + public ConfiguredConsumerApiService(IOptions> options) { _consumerAPIs = options.Value; } diff --git a/src/DigitalData.Auth.API/Services/DIExtensions.cs b/src/DigitalData.Auth.API/Services/DIExtensions.cs new file mode 100644 index 0000000..9af488f --- /dev/null +++ b/src/DigitalData.Auth.API/Services/DIExtensions.cs @@ -0,0 +1,17 @@ +using DigitalData.Auth.API.Dto; +using DigitalData.Auth.API.Services.Contracts; +using Microsoft.Extensions.Options; + +namespace DigitalData.Auth.API.Services +{ + public static class DIExtensions + { + public static IServiceCollection AddConsumerApiServiceFromConfiguration(this IServiceCollection services, IConfiguration configuration, string key = "ConsumerAPIs") + { + var ConsumerApis = configuration.GetValue>("ConsumerAPIs") ?? throw new InvalidOperationException($"No Consumer list found in {key} in configuration."); + services.AddSingleton(Options.Create(ConsumerApis)); + services.AddSingleton(); + return services; + } + } +} \ No newline at end of file