private static MidFunc Docs(DocsResource documentation) { Task Docs(HttpContext context, Func <Task> next) { bool TryGetDocs(out Response value) => (value = documentation.Get( context.GetRouteData().GetDoc(), context.Request.Headers["Accept"])) != null; return(!TryGetDocs(out var response) ? next() : context.WriteResponse(response)); } return(Docs); }
private static Action <IApplicationBuilder> Configure(DocsResource documentation) { Task Docs(HttpContext context, Func <Task> next) { Response response; return(!context.Request.Path.StartsWithSegments("/docs", out var rel) || (response = documentation.Get(rel.Value.Remove(0, 1))) == null ? next() : context.WriteResponse(response)); } return(builder => builder .UseMiddlewareLogging(typeof(DocsMiddleware)) .MapWhen(HttpMethod.Get, inner => inner.UseAccept(Constants.MediaTypes.TextMarkdown).Use(Docs)) .UseAllowedMethods(documentation)); }