public static IApplicationBuilder UseEasyData <THandler>(this IApplicationBuilder app, Action <EasyDataOptions> optionsTuner = null) where THandler : EasyDataApiHandler
        {
            var options = new EasyDataOptions(app.ApplicationServices);

            optionsTuner?.Invoke(options);
            return(app.UseMiddleware <EasyDataMiddleware <THandler> >(options));
        }
        public static IEndpointConventionBuilder MapEasyData <THandler>(
            this IEndpointRouteBuilder builder,
            Action <EasyDataOptions> optionsTuner = null) where THandler : EasyDataApiHandler
        {
            var options = new EasyDataOptions(builder.ServiceProvider);

            optionsTuner?.Invoke(options);

            options.Endpoint = options.Endpoint.ToString().TrimEnd('/');

            var pattern = RoutePatternFactory.Parse(options.Endpoint + "/{**slug}");

            var app = builder.CreateApplicationBuilder();

            app.UseMiddleware <EasyDataMiddleware <THandler> >(options);

            // return 404 if the request was not processed by EasyDataMiddleware
            // to prevent the exception on reaching the end of pipeline
            app.Run(context =>
            {
                context.Response.StatusCode = 404;
                return(Task.CompletedTask);
            });

            return(builder.Map(pattern, app.Build())
                   .WithDisplayName("EasyData API"));
        }
Esempio n. 3
0
        public static IEndpointConventionBuilder MapEasyData <THandler>(
            this IEndpointRouteBuilder builder,
            Action <EasyDataOptions> optionsTuner = null) where THandler : EasyDataApiHandler
        {
            var options = new EasyDataOptions(builder.ServiceProvider);

            optionsTuner?.Invoke(options);

            options.Endpoint = options.Endpoint.ToString().TrimEnd('/');

            var pattern = RoutePatternFactory.Parse(options.Endpoint + "/{**slug}");

            var pipeline = builder.CreateApplicationBuilder()
                           .UseMiddleware <EasyDataMiddleware <THandler> >(options)
                           .Build();

            return(builder.Map(pattern, pipeline)
                   .WithDisplayName("EasyData API"));
        }
Esempio n. 4
0
 /// <summary>
 /// Initializes a new instance of the <see cref="EasyDataApiHandler"/> class.
 /// </summary>
 /// <param name="manager">The instance of EasyDataManager that incapsulates all business logic of EasyData API.</param>
 /// <param name="options"> Some options that affects handler's behavior.</param>
 /// <param name="httpContext">The current HttpContext.</param>
 public EasyDataApiHandler(EasyDataManager manager, EasyDataOptions options, HttpContext httpContext)
 {
     Manager     = manager;
     Options     = options;
     HttpContext = httpContext;
 }
Esempio n. 5
0
 public EasyDataMiddleware(RequestDelegate next, EasyDataOptions options)
 {
     _next    = next;
     _options = options;
 }