using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection.Extensions; using Microsoft.Extensions.Options; namespace zero.Api; public class ZeroApiPlugin : ZeroPlugin { internal Action PostConfigureServices = null; public ZeroApiPlugin() { Options.Name = "zero.Api"; } public override void ConfigureServices(IServiceCollection services, IConfiguration configuration) { services.AddOptions().Bind(configuration.GetSection("Zero:Api")).Configure(ConfigureOptions); services.TryAddEnumerable(ServiceDescriptor.Transient, ZeroApiMvcOptions>()); services.AddScoped(); ZeroModuleCollection.AddModule(services, configuration); ZeroModuleCollection.AddModule(services, configuration); ZeroModuleCollection.AddModule(services, configuration); ZeroModuleCollection.AddModule(services, configuration); ZeroModuleCollection.AddModule(services, configuration); ZeroModuleCollection.AddModule(services, configuration); ZeroModuleCollection.AddModule(services, configuration); ZeroModuleCollection.AddModule(services, configuration); PostConfigureServices?.Invoke(services, configuration); } protected void ConfigureOptions(ApiOptions options, IWebHostEnvironment env) { options.Search.Enabled = true; //Map().Display((x, res, opts) => //{ // PageType pageType = opts.Pages.GetByAlias(x.PageTypeAlias); // if (pageType != null) // { // res.Icon = pageType.Icon; // } // res.Url = "/pages/edit/" + x.Id; //}); //Map("fth-image"); } }