using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; using Ocelot.Configuration; using Ocelot.Configuration.Repository; using Ocelot.Middleware; using Ocelot.Provider.Nacos.NacosClient.V2; namespace Ocelot.Provider.Nacos; public class NacosMiddlewareConfigurationProvider { public static OcelotMiddlewareConfigurationDelegate Get = builder => { var internalConfigRepo = builder.ApplicationServices.GetService(); var config = internalConfigRepo.Get(); var hostLifetime = builder.ApplicationServices.GetService(); if (UsingNacosServiceDiscoveryProvider(config.Data)) { builder.UseNacosAspNet(hostLifetime).GetAwaiter().GetResult(); } return Task.CompletedTask; }; private static bool UsingNacosServiceDiscoveryProvider(IInternalConfiguration configuration) { return configuration?.ServiceProviderConfiguration != null && configuration.ServiceProviderConfiguration.Type?.ToLower() == "nacos"; } }