/// <summary> /// Initializes a new instance of the <see cref="QueryValidation"/> class. /// </summary> /// <param name="pipelineFactory">The middleware pipeline factory.</param> public QueryValidation(IMiddlewarePipelineFactory pipelineFactory) { // Note: You could simply new-up a MiddlewarePipeline instance here and build it, // but this example uses a pipeline factory so you can share pipelines between // Azure Functions that have common requirements, without having to duplicate // code. this.pipeline = pipelineFactory.CreateForQuery <QueryValidationQueryParameters>(this.ExecuteAsync); }
/// <summary> /// Conditionally creates a branch in the request pipeline that is rejoined to the main pipeline. /// </summary> /// <param name="pipeline">The pipeline.</param> /// <param name="condition">The function which is invoked to determine if the branch should be taken.</param> /// <param name="configure">Configures the branch.</param> /// <returns>The pipeline instance.</returns> public static IMiddlewarePipeline UseWhen( this IMiddlewarePipeline pipeline, Func <HttpContext, bool> condition, Action <IMiddlewarePipeline> configure) { var middleware = new ConditionalMiddleware(pipeline, condition, configure, true); return(pipeline.Use(middleware)); }
/// <summary> /// Adds body payload validation middleware to the pipeline. /// </summary> /// <typeparam name="T">The body model type.</typeparam> /// <param name="pipeline">The pipeline.</param> /// <param name="handleValidationFailure">Optional handler to return a custom response when validation is unsuccessful.</param> /// <returns>The pipeline instance.</returns> public static IMiddlewarePipeline UseBodyValidation <T>( this IMiddlewarePipeline pipeline, Func <HttpContext, ModelValidationResult, IActionResult> handleValidationFailure = null) where T : new() { return(pipeline.Use(new BodyModelValidationMiddleware <T>() { HandleValidationFailure = handleValidationFailure })); }
public void UsePipeline(IMiddlewarePipeline pipeline) { AssertNotDisposed(); if (Pipeline != null) { throw new InvalidOperationException("Pipeline can only be set once."); } Pipeline = pipeline; }
/// <summary> /// Initializes a new instance of the <see cref="BodyValidation"/> class. /// </summary> /// <param name="pipelineFactory">The middleware pipeline factory.</param> public BodyValidationWithCustomResponse(IMiddlewarePipelineFactory pipelineFactory) { // Note: You could simply new-up a MiddlewarePipeline instance here and build it, // but this example uses a pipeline factory so you can share pipelines between // Azure Functions that have common requirements, without having to duplicate // code. this.pipeline = pipelineFactory.CreateForBody <BodyValidationBody>( this.ExecuteAsync, ResponseHelper.HandleValidationFailure); }
/// <summary> /// Initializes a new instance of the <see cref="ConditionalMiddleware"/> class. /// </summary> /// <param name="pipeline">The pipeline.</param> /// <param name="condition">The condition to evaluate.</param> /// <param name="configure">Configures the branch.</param> /// <param name="rejoinPipeline">Determines if the branch should rejoin the main pipeline or not.</param> public ConditionalMiddleware( IMiddlewarePipeline pipeline, Func <HttpContext, bool> condition, Action <IMiddlewarePipeline> configure, bool rejoinPipeline) { this.pipeline = pipeline; this.configure = configure; this.condition = condition; this.rejoinPipeline = rejoinPipeline; }
/// <summary> /// Initializes a new instance of the <see cref="MiddlewareFactory"/> class. /// </summary> /// <param name="httpContextAccessor">The HTTP context accessor.</param> /// <param name="middlewareA">Middleware A</param> /// <param name="middlewareB">Middleware B</param> public MiddlewarePipelineFactory( IHttpContextAccessor httpContextAccessor, ILogger <MiddlewarePipelineFactory> logger, HttprequestHeaderMiddleware middleware) { this.httpContextAccessor = httpContextAccessor; this.middleware = middleware; // CREATE PIPELINE ONCE PER FUNCTION CLASS this.pipeline = this.Create(ExecuteFunction1Async); logger.LogInformation("logging MiddlewarePipelineFactory ...."); }
public static IMiddlewarePipeline Add(this IMiddlewarePipeline pipeline, NextDelegate method) { if (pipeline == null) { throw new ArgumentNullException(nameof(pipeline)); } if (method == null) { throw new ArgumentNullException(nameof(method)); } pipeline.AddLast(new DelegateMiddleware(method)); return(pipeline); }
/// <summary> /// Adds exception handling middleware to the pipeline. /// </summary> /// <param name="pipeline">The pipeline.</param> /// <param name="exceptionHandler">An optional handler to process exceptions. Leave null to use the default exception handler.</param> /// <param name="loggerHandler">An optional handler to log exceptions.</param> /// <returns>The pipeline instance.</returns> public static IMiddlewarePipeline UseExceptionHandling( this IMiddlewarePipeline pipeline, Func <Exception, HttpContext, Task <IActionResult> > exceptionHandler = null, Func <Exception, Task> loggerHandler = null) { var middleware = new ExceptionHandlerMiddleware() { ExceptionHandler = exceptionHandler ?? ExceptionHandlerMiddleware.DefaultExceptionHandler, LogExceptionAsync = loggerHandler, }; return(pipeline.Use(middleware)); }
/// <summary> /// Initializes a new instance of the <see cref="ConditionalMiddleware"/> class. /// </summary> /// <param name="pipeline">The pipeline. Required.</param> /// <param name="condition">The condition to evaluate. Required.</param> /// <param name="configure">Configures the branch. Optional.</param> /// <param name="rejoinPipeline">Determines if the branch should rejoin the main pipeline or not.</param> public ConditionalMiddleware( IMiddlewarePipeline pipeline, Func <HttpContext, bool> condition, Action <IMiddlewarePipeline> configure, bool rejoinPipeline) { GuardClauses.IsNotNull(nameof(pipeline), pipeline); GuardClauses.IsNotNull(nameof(condition), condition); this.pipeline = pipeline; this.configure = configure; this.condition = condition; this.rejoinPipeline = rejoinPipeline; }
public static IMiddlewarePipeline AddMvc(this IMiddlewarePipeline pipeline, IRouter router) { if (pipeline == null) { throw new ArgumentNullException(nameof(pipeline)); } if (router == null) { throw new ArgumentNullException(nameof(router)); } var middleware = new MvcMiddleware(router); pipeline.AddLast(middleware); return(pipeline); }
public static IMiddlewarePipeline AddMvc(this IMiddlewarePipeline pipeline, IServiceProvider provider) { if (pipeline == null) { throw new ArgumentNullException(nameof(pipeline)); } if (provider == null) { throw new ArgumentNullException(nameof(provider)); } var router = provider.GetService <IRouter>(); var middleware = new MvcMiddleware(router); pipeline.AddLast(middleware); return(pipeline); }
protected override void ConfigurePipeline(IMiddlewarePipeline pipeline, IServiceProvider services) { pipeline.AddMvc(services); }
internal SockConnection(Socket socket, IMiddlewarePipeline pipeline) { UsePipeline(pipeline); Socket = socket; }
/// <summary> /// Adds an Azure Function middleware to the pipeline. /// </summary> /// <param name="pipeline">The pipeline.</param> /// <param name="func">The function to add.</param> /// <returns>The pipeline instance.</returns> public static IMiddlewarePipeline Use(this IMiddlewarePipeline pipeline, Func <HttpContext, Task <IActionResult> > func) { return(pipeline.Use(new FunctionMiddleware(func))); }
protected virtual void ConfigurePipeline(IMiddlewarePipeline pipeline, IServiceProvider services) { }
/// <summary> /// Adds body payload validation middleware to the pipeline. /// </summary> /// <typeparam name="T">The body model type.</typeparam> /// <param name="pipeline">The pipeline.</param> /// <returns>The pipeline instance.</returns> public static IMiddlewarePipeline UseBodyValidation <T>(this IMiddlewarePipeline pipeline) where T : new() { return(pipeline.Use(new BodyModelValidationMiddleware <T>())); }
/// <summary> /// Adds correlation ID middleware to the pipeline. /// </summary> /// <param name="pipeline">The pipeline.</param> /// <param name="correlationIdHeaders">The colleciton of request headers that contain the correlation ID. The first match is used.</param> /// <returns>The pipeline instance.</returns> public static IMiddlewarePipeline UseCorrelationId(this IMiddlewarePipeline pipeline, IEnumerable <string> correlationIdHeaders) { return(pipeline.Use(new CorrelationIdMiddleware(correlationIdHeaders))); }
/// <summary> /// Adds a request delegate middleware to the pipeline. /// </summary> /// <param name="pipeline">The pipeline.</param> /// <param name="requestDelegate">The request delegate to add.</param> /// <returns>The pipeline instance.</returns> public static IMiddlewarePipeline Use(this IMiddlewarePipeline pipeline, RequestDelegate requestDelegate) { return(pipeline.Use(new RequestDelegateMiddleware(requestDelegate))); }
/// <summary> /// Initializes a new instance of the <see cref="BodyValidation"/> class. /// </summary> /// <param name="pipelineFactory">The middleware pipeline factory.</param> public ExceptionHandler(IMiddlewarePipelineFactory pipelineFactory) { this.pipeline = pipelineFactory.Create(this.ExecuteAsync); }