/// <summary> /// Integrate status url handling /// </summary> public static void UseStatusApi(this IApplicationBuilder app, string path = "/status", JsonSerializerSettings serializerSettings = null) { if (path == null) { throw new ArgumentNullException(nameof(path)); } var detector = new StatusRequestDetector(path); var urlHandler = new StatusProviderUrlHandler(detector, serializerSettings); app.MapWhen(ctx => detector.DetectAndGetRelatedPath(ctx.Request) != null, appB => { appB.Run(async context => await urlHandler.Handle(app, context)); }); }
public async Task Handle(IApplicationBuilder app, HttpContext context) { var path = _detector.DetectAndGetRelatedPath(context.Request); object statusObj; switch (path) { case "log": case "/log": statusObj = ReturnLog(app); break; case "config": case "/config": statusObj = ReturnConfig(app); break; default: statusObj = ReturnStatus(app); break; } if (statusObj == null) { context.Response.StatusCode = 404; await context.Response.WriteAsync("No status found"); } else { string statusTxt = JsonConvert.SerializeObject(statusObj, _serializerSettings); context.Response.StatusCode = 200; context.Response.Headers.Append("Content-Type", "application/json"); await context.Response.WriteAsync(statusTxt); } }