public static Task WriteHealthCheckUIResponse(HttpContext httpContext, HealthReport report, Action <JsonSerializerSettings> jsonConfigurator)
        {
            var response = "{}";

            if (report != null)
            {
                var settings = new JsonSerializerSettings()
                {
                    ContractResolver      = new CamelCasePropertyNamesContractResolver(),
                    NullValueHandling     = NullValueHandling.Ignore,
                    ReferenceLoopHandling = ReferenceLoopHandling.Ignore,
                };

                jsonConfigurator?.Invoke(settings);

                settings.Converters.Add(new StringEnumConverter());

                httpContext.Response.ContentType = DEFAULT_CONTENT_TYPE;

                var uiReport = UIHealthReport
                               .CreateFrom(report);

                response = JsonConvert.SerializeObject(uiReport, settings);
            }

            return(httpContext.Response.WriteAsync(response));
        }
        public static Task WriteHealthCheckUIResponse(HttpContext httpContext, HealthReport report, Action <JsonSerializerOptions> jsonConfigurator)
        {
            var response = "{}";

            if (report != null)
            {
                var settings = new JsonSerializerOptions()
                {
                    AllowTrailingCommas  = true,
                    PropertyNamingPolicy = JsonNamingPolicy.CamelCase,
                    IgnoreNullValues     = true,
                };

                jsonConfigurator?.Invoke(settings);

                settings.Converters.Add(new JsonStringEnumConverter());

                //for compatibility with older UI versions ( <3.0 ) we arrange
                //timepan serialization as s
                settings.Converters.Add(new TimeSpanConverter());

                httpContext.Response.ContentType = DEFAULT_CONTENT_TYPE;

                var uiReport = UIHealthReport
                               .CreateFrom(report);

                response = JsonSerializer.Serialize(uiReport, settings);
            }

            return(httpContext.Response.WriteAsync(response));
        }
        public static async Task WriteHealthCheckUIResponse(HttpContext httpContext, HealthReport report)
        {
            if (report != null)
            {
                httpContext.Response.ContentType = DEFAULT_CONTENT_TYPE;

                var uiReport = UIHealthReport
                               .CreateFrom(report);

                using var responseStream = new MemoryStream();

                await JsonSerializer.SerializeAsync(responseStream, uiReport, options.Value);

                await httpContext.Response.BodyWriter.WriteAsync(responseStream.ToArray());
            }
            else
            {
                await httpContext.Response.BodyWriter.WriteAsync(emptyResponse);
            }
        }