/// <summary> /// Adds endpoints for Features actions to the <see cref="IEndpointRouteBuilder"/>. And also display the UI. /// </summary> /// <param name="builder">The <see cref="IEndpointRouteBuilder"/>.</param> /// <returns>An <see cref="IEndpointConventionBuilder"/> for endpoints associated with controller actions.</returns> public static IEndpointConventionBuilder MapFeaturesUI(this IEndpointRouteBuilder builder) { var getAuthSchemesApiDelegate = builder.CreateApplicationBuilder() .UseMiddleware <GetAuthSchemesApiEndpointMiddleware>() .Build(); var getAllFeaturesApiDelegate = builder.CreateApplicationBuilder() .UseMiddleware <GetAllFeaturesApiEndpointMiddleware>() .Build(); var setFeatureApiDelegate = builder.CreateApplicationBuilder() .UseMiddleware <SetFeatureApiEndpointMiddleware>() .Build(); var getAuthSchemesApiEndpoint = builder.MapGet("/features/auth/schemes", getAuthSchemesApiDelegate) .WithDisplayName("Get Features auth schemes - UI Api"); var getAllfeaturesApiEndpoint = builder.MapGet("/features", getAllFeaturesApiDelegate) .WithDisplayName("Get all Features - UI Api"); var setFeatureApiEndpoint = builder.MapPost("/features/{featureName}/set", setFeatureApiDelegate) .WithDisplayName("Set Feature value - UI Api"); var apiEndpoints = new[] { getAuthSchemesApiEndpoint, getAllfeaturesApiEndpoint, setFeatureApiEndpoint }; var resourcesEndpoints = UIEndpointsResourceMapper.Map(builder, new Options()); var endpoints = apiEndpoints.Union(resourcesEndpoints); return(new FeaturesUIConventionBuilder(endpoints)); }
public static IEndpointConventionBuilder MapHealthChecksUI(this IEndpointRouteBuilder builder, Action <Options> setupOptions = null) { var options = new Options(); setupOptions?.Invoke(options); EnsureValidApiOptions(options); var apiDelegate = builder.CreateApplicationBuilder() .UseMiddleware <UIApiRequestLimitingMidleware>() .UseMiddleware <UIApiEndpointMiddleware>() .Build(); var settingsDelegate = builder.CreateApplicationBuilder() .UseMiddleware <UISettingsMiddleware>() .Build(); var webhooksDelegate = builder.CreateApplicationBuilder() .UseMiddleware <UIWebHooksApiMiddleware>() .Build(); var embeddedResourcesAssembly = typeof(UIResource).Assembly; var resourcesEndpoints = new UIEndpointsResourceMapper(new UIEmbeddedResourcesReader(embeddedResourcesAssembly)) .Map(builder, options); var apiEndpoint = builder.Map(options.ApiPath, apiDelegate) .WithDisplayName("HealthChecks UI Api"); var settingsEndpoint = builder.Map($"{options.ApiPath}/{Keys.HEALTHCHECKSUI_SETTINGS_PATH}", settingsDelegate); var webhooksEndpoint = builder.Map(options.WebhookPath, webhooksDelegate) .WithDisplayName("HealthChecks UI Webhooks"); var endpointConventionBuilders = new List <IEndpointConventionBuilder>( new[] { apiEndpoint, webhooksEndpoint, settingsEndpoint }.Union(resourcesEndpoints)); return(new HealthCheckUIConventionBuilder(endpointConventionBuilders)); }