using LINGYUN.ApiGateway.Utils; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.DependencyInjection; using Ocelot.Multiplexer; using System; using System.Linq; using System.Threading.Tasks; using Volo.Abp; using Volo.Abp.Application.Dtos; namespace LINGYUN.ApiGateway.Controllers { [RemoteService(Name = ApiGatewayConsts.RemoteServiceName)] [Area("ApiGateway")] [Route("api/ApiGateway/Basic")] public class ApiGatewayController : Controller { protected IServiceProvider ServiceProvider { get; } protected ILoadBalancerFinder LoadBalancerFinder { get; } public ApiGatewayController( IServiceProvider serviceProvider, ILoadBalancerFinder loadBalancerFinder) { ServiceProvider = serviceProvider; LoadBalancerFinder = loadBalancerFinder; } [HttpGet] [Route("Aggregators")] public Task GetAggregatorsAsync() { var aggregators = ServiceProvider.GetServices(); var aggregatorDtos = new ListResultDto(aggregators.Select(agg => agg.GetType().Name).ToList()); return Task.FromResult(Json(aggregatorDtos)); } [HttpGet] [Route("LoadBalancers")] public async Task GetLoadBalancersAsync() { var loadBalancers = await LoadBalancerFinder.GetLoadBalancersAsync(); var loadBalancerDtos = new ListResultDto(loadBalancers); return Json(loadBalancerDtos); } } }