예제 #1
0
    /// <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));
    }
예제 #2
0
        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));
        }