private static List <HttpMiddleware> GetMiddlewares( HttpMiddleware functionMiddleware, IServerlessLogger serverlessLogger, IHttpContextAccessor acessor, bool allowAnonymous) { var exceptionMiddleware = new ExceptionMiddleware(serverlessLogger); var loggerMiddleware = new LoggerMiddleware(serverlessLogger); var headerMiddleware = new HeaderMiddleware(); List <HttpMiddleware> middlewares = null; if (allowAnonymous) { middlewares = MiddlewaresWithoutAuth( functionMiddleware, exceptionMiddleware, loggerMiddleware, headerMiddleware); } else { middlewares = MiddlewaresWithAuth( functionMiddleware, serverlessLogger, acessor, exceptionMiddleware, loggerMiddleware, headerMiddleware); } return(middlewares); }
private static List <HttpMiddleware> MiddlewaresWithoutAuth(HttpMiddleware functionMiddleware, ExceptionMiddleware exceptionMiddleware, LoggerMiddleware loggerMiddleware, HeaderMiddleware headerMiddleware) { return(new List <HttpMiddleware>() { loggerMiddleware, headerMiddleware, exceptionMiddleware, functionMiddleware }); }
/// <summary> /// Execute middleware pipeline. /// </summary> /// <param name="functionMiddleware">Function logic as middleware to be called inside pipeline.</param> /// <param name="serverlessLogger">Modal logger.</param> /// <param name="request">Function http request.</param> /// <param name="acessor">See <see cref="IHttpContextAccessor"/>.</param> /// <param name="allowAnonymous">If true, it allows access to the endpoint without authentication.(Default: false)</param> /// <returns>Response <see cref="IActionResult"/> after pipeline execution.</returns> public static async Task <IActionResult> ExecutePipeline( this HttpMiddleware functionMiddleware, IServerlessLogger serverlessLogger, HttpRequest request, IHttpContextAccessor acessor, bool allowAnonymous = false) { var middlewares = GetMiddlewares(functionMiddleware, serverlessLogger, acessor, allowAnonymous); return(await new MiddlewarePipeline(middlewares, serverlessLogger) .ExecuteAsync(HttpFunctionContext.Build(request)) .ConfigureAwait(false)); }
private static List <HttpMiddleware> MiddlewaresWithAuth(HttpMiddleware functionMiddleware, IServerlessLogger serverlessLogger, IHttpContextAccessor acessor, ExceptionMiddleware exceptionMiddleware, LoggerMiddleware loggerMiddleware, HeaderMiddleware headerMiddleware) { var authenticationMiddleware = new AuthenticationMiddleware( serverlessLogger, Environment.GetEnvironmentVariable("AUTH.ISSUER"), Environment.GetEnvironmentVariable("AUTH.AUDIENCE"), Environment.GetEnvironmentVariable("AUTH.METADATAADDRESS"), acessor); return(new List <HttpMiddleware>() { loggerMiddleware, headerMiddleware, exceptionMiddleware, authenticationMiddleware, functionMiddleware }); }