bind appsettings
This commit is contained in:
parent
fe198615fc
commit
2d8d5442d1
@ -1,13 +1,36 @@
|
|||||||
using Microsoft.Extensions.DependencyInjection;
|
using Microsoft.Extensions.Configuration;
|
||||||
|
using Microsoft.Extensions.DependencyInjection;
|
||||||
|
|
||||||
namespace Leanetec.EConnect.Client;
|
namespace Leanetec.EConnect.Client;
|
||||||
|
|
||||||
public static class DependencyInjection
|
public static class DependencyInjection
|
||||||
{
|
{
|
||||||
public static IServiceCollection AddEConnectClient(this IServiceCollection services, Action<ClientOptions> clientOptions)
|
public static IServiceCollection AddEConnectClient(this IServiceCollection services, Action<Config>? options = null)
|
||||||
{
|
{
|
||||||
services.Configure(clientOptions);
|
var config = new Config(services);
|
||||||
|
options?.Invoke(config);
|
||||||
|
|
||||||
services.AddMediatR(cfg => cfg.RegisterServicesFromAssembly(typeof(DependencyInjection).Assembly));
|
services.AddMediatR(cfg => cfg.RegisterServicesFromAssembly(typeof(DependencyInjection).Assembly));
|
||||||
return services;
|
return services;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public sealed class Config
|
||||||
|
{
|
||||||
|
private readonly IServiceCollection _services;
|
||||||
|
|
||||||
|
internal Config(IServiceCollection services)
|
||||||
|
{
|
||||||
|
_services = services;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void ConfigureClient(IConfiguration config)
|
||||||
|
{
|
||||||
|
_services.Configure<ClientOptions>(config);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void ConfigureClient(Action<ClientOptions> options)
|
||||||
|
{
|
||||||
|
_services.Configure(options);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@ -8,6 +8,8 @@
|
|||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="MediatR" Version="13.0.0" />
|
<PackageReference Include="MediatR" Version="13.0.0" />
|
||||||
|
<PackageReference Include="Microsoft.Extensions.Configuration.Abstractions" Version="8.0.0" />
|
||||||
|
<PackageReference Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="8.0.0" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
|||||||
@ -27,10 +27,10 @@ public static class DependencyInjection
|
|||||||
return services;
|
return services;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static IServiceCollection AddInfrastructureServices(this IServiceCollection services, Action<Config> options)
|
public static IServiceCollection AddInfrastructureServices(this IServiceCollection services, Action<Config>? options = null)
|
||||||
{
|
{
|
||||||
Config config = new(services);
|
Config config = new(services);
|
||||||
options.Invoke(config);
|
options?.Invoke(config);
|
||||||
services.ConfigureEConnectClient(config.EConnectClient);
|
services.ConfigureEConnectClient(config.EConnectClient);
|
||||||
services.AddScoped(typeof(IEConnectClient<>), typeof(EConnectClient<>));
|
services.AddScoped(typeof(IEConnectClient<>), typeof(EConnectClient<>));
|
||||||
return services;
|
return services;
|
||||||
|
|||||||
@ -2,9 +2,11 @@ using Leanetec.EConnect.Client;
|
|||||||
using Leanetec.EConnect.Infrastructure;
|
using Leanetec.EConnect.Infrastructure;
|
||||||
|
|
||||||
var builder = WebApplication.CreateBuilder(args);
|
var builder = WebApplication.CreateBuilder(args);
|
||||||
|
var config = builder.Configuration;
|
||||||
|
|
||||||
// Add services to the container.
|
// Add services to the container.
|
||||||
builder.Services.AddEConnectClient(opt => { }).AddInfrastructureServices(opt => { });
|
var clientOpt = config.GetSection("EConnect");
|
||||||
|
builder.Services.AddEConnectClient(opt => opt.ConfigureClient(clientOpt)).AddInfrastructureServices();
|
||||||
|
|
||||||
builder.Services.AddControllers();
|
builder.Services.AddControllers();
|
||||||
// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
|
// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
|
||||||
|
|||||||
@ -5,5 +5,9 @@
|
|||||||
"Microsoft.AspNetCore": "Warning"
|
"Microsoft.AspNetCore": "Warning"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"AllowedHosts": "*"
|
"AllowedHosts": "*",
|
||||||
|
"EConnect": {
|
||||||
|
"BaseAddress": "https://portal.demoportal01.leanetec.com",
|
||||||
|
"apiKey": "HGpGp3vk3MsKgSe0tKVZ1ZRCuq6bFoJ1"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user