Exemplo n.º 1
0
        /// <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));
            });
        }
Exemplo n.º 2
0
        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);
            }
        }