using Microsoft.AspNetCore.Builder;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Nacos.V2.DependencyInjection;
namespace Ocelot.Provider.Nacos.NacosClient.V2;
public static class ServiceCollectionExtensions
{
///
/// Add Nacos AspNet. This will register and de-register instance automatically.
/// Mainly for nacos server 2.x
///
/// services.
/// configuration
/// IServiceCollection
public static IServiceCollection AddNacosAspNet(this IServiceCollection services, IConfiguration configuration)
{
services.Configure(configuration.GetSection("nacos"));
services.AddNacosV2Naming(configuration);
services.AddSingleton();
return services;
}
///
/// Add Nacos AspNet. This will register and de-register instance automatically.
/// Mainly for nacos server 2.x
///
/// services
/// optionsAccs
/// IServiceCollection
public static IServiceCollection AddNacosAspNet(this IServiceCollection services, Action optionsAccs)
{
services.Configure(optionsAccs);
var options = new NacosAspNetOptions();
optionsAccs.Invoke(options);
services.AddNacosV2Naming(x => options.BuildSdkOptions());
services.AddSingleton();
return services;
}
public static async Task UseNacosAspNet(this IApplicationBuilder app, IHostApplicationLifetime lifetime)
{
RegSvcBgTask regSvcBgTask = app.ApplicationServices.GetRequiredService();
await regSvcBgTask.StartAsync();
lifetime.ApplicationStopping.Register(async () => {
await regSvcBgTask.StopAsync();
});
return app;
}
}