feat(DIExtensions): Zur Verwaltung von Abhängigkeitsinjektionen von ConsumerAPiService.

This commit is contained in:
Developer 02 2025-01-15 10:19:25 +01:00
parent 8e5180188e
commit b1bfc46a60
3 changed files with 21 additions and 2 deletions

View File

@ -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<AuthApiParams>() ?? throw new InvalidOperationExcepti
// Add services to the container.
builder.Services.Configure<AuthApiParams>(config);
builder.Services.AddConsumerApiServiceFromConfiguration(config);
builder.Services.AddControllers();
// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle

View File

@ -4,10 +4,10 @@ using Microsoft.Extensions.Options;
namespace DigitalData.Auth.API.Services
{
public class ConsumerApiJsonBasedService : IConsumerApiService
public class ConfiguredConsumerApiService : IConsumerApiService
{
private readonly IEnumerable<ConsumerApi> _consumerAPIs;
public ConsumerApiJsonBasedService(IOptions<IEnumerable<ConsumerApi>> options)
public ConfiguredConsumerApiService(IOptions<IEnumerable<ConsumerApi>> options)
{
_consumerAPIs = options.Value;
}

View File

@ -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<IEnumerable<ConsumerApi>>("ConsumerAPIs") ?? throw new InvalidOperationException($"No Consumer list found in {key} in configuration.");
services.AddSingleton(Options.Create(ConsumerApis));
services.AddSingleton<IConsumerApiService, ConfiguredConsumerApiService>();
return services;
}
}
}