public MetricsModule() : base(Config.ModulePath ?? "/") { if (string.IsNullOrEmpty(Config.ModulePath)) { return; } if (Config.ModuleConfigAction != null) { Config.ModuleConfigAction(this); } var noCacheHeaders = new[] { new { Header = "Cache-Control", Value = "no-cache, no-store, must-revalidate" }, new { Header = "Pragma", Value = "no-cache" }, new { Header = "Expires", Value = "0" } }; Get["/"] = _ => { if (this.Request.Url.Path.EndsWith("/")) { return(Response.AsText(FlotWebApp.GetFlotApp(), "text/html")); } else { return(Response.AsRedirect(this.Request.Url.ToString() + "/")); } }; Get["/text"] = _ => Response.AsText(StringReporter.RenderMetrics(Config.MetricsContext.DataProvider.CurrentMetricsData, Config.HealthStatus)) .WithHeaders(noCacheHeaders); Get["/json"] = _ => Response.AsText(OldJsonBuilder.BuildJson(Config.MetricsContext.DataProvider.CurrentMetricsData, Clock.Default), "text/json") .WithHeaders(noCacheHeaders); Get["/jsonnew"] = _ => Response.AsText(JsonMetrics.Serialize(Config.MetricsContext.DataProvider.CurrentMetricsData), "text/json") .WithHeaders(noCacheHeaders); Get["/ping"] = _ => Response.AsText("pong", "text/plain") .WithHeaders(noCacheHeaders); Get["/health"] = _ => GetHealthStatus() .WithHeaders(noCacheHeaders); }
private void WriteFullJsonMetrics(HttpListenerContext context, MetricsDataProvider metricsDataProvider) { context.Response.Headers.Add("Access-Control-Allow-Origin", "*"); context.Response.Headers.Add("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept"); context.Response.ContentType = "application/json"; context.Response.StatusCode = 200; context.Response.StatusDescription = "OK"; AddNoCacheHeaders(context.Response); var json = JsonMetrics.Serialize(metricsDataProvider.CurrentMetricsData); using (var writer = new StreamWriter(context.Response.OutputStream)) { writer.Write(json); } context.Response.Close(); }