using FluentValidation; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.Infrastructure; using Microsoft.Extensions.DependencyInjection; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using zero.Core.Api; using zero.Core.Entities; namespace zero.Debug.Controllers { public class TestController : Controller { IAppScope Api; ITranslationsApi CurrentApi; private readonly IActionDescriptorCollectionProvider _actionDescriptorCollectionProvider; public TestController(IAppScope api, ITranslationsApi currentApi, IActionDescriptorCollectionProvider actionDescriptorCollectionProvider) { _actionDescriptorCollectionProvider = actionDescriptorCollectionProvider; Api = api; CurrentApi = currentApi; } [HttpGet] public IActionResult Services() { List items = new List(); foreach (var service in Startup.Services) { if (!service.ServiceType.FullName.StartsWith("zero.") && (service.ImplementationType == null || !service.ImplementationType.FullName.StartsWith("zero."))) { continue; } items.Add(new { name = service.ServiceType.FullName, lifetime = service.Lifetime, instance = service.ImplementationType?.FullName }); } return Json(items); } [HttpGet] public IActionResult Things([FromServices] IValidator appValidator) { return Ok(); } [HttpGet] public async Task Index() { IList global = await Api.Global.GetAll(); IList current = await CurrentApi.GetAll(); IList appTwo = await Api.App("applications.2-A").GetAll(); IList shared = await Api.Shared.GetAll(); return Json(new { current, global, appTwo, shared }); } [HttpGet] public IActionResult Routes() { var routes = _actionDescriptorCollectionProvider.ActionDescriptors.Items.ToList(); if (routes != null && routes.Any()) { return Json(routes); } return Json(new string [0]); } } internal class RouteModel { public string Name { get; set; } public string Template { get; set; } } }