예제 #1
0
        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);
        }
예제 #2
0
        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));
        }