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")); }
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")); }
/// <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; }
public EasyDataMiddleware(RequestDelegate next, EasyDataOptions options) { _next = next; _options = options; }