private static Task WriteResponse(HttpContext context, HealthReport result)
        {
            IClientConfigOptions clientConfigOptions = context.RequestServices.GetRequiredService <IClientConfigOptions>();

            context.Response.ContentType = "application/json; charset=utf-8";

            var options = new JsonWriterOptions
            {
                Indented = true
            };

            using MemoryStream stream = new();
            using (Utf8JsonWriter writer = new(stream, options))
            {
                writer.WriteStartObject();
                writer.WriteString("buildVersion", clientConfigOptions.BuildVersion);
                writer.WriteString("status", result.Status.ToString());
                writer.WriteStartObject("results");
                foreach (var entry in result.Entries)
                {
                    writer.WriteStartObject(entry.Key);
                    writer.WriteString("status", entry.Value.Status.ToString());
                    writer.WriteString("description", entry.Value.Description);
                    writer.WriteStartObject("data");
                    foreach (var item in entry.Value.Data)
                    {
                        writer.WritePropertyName(item.Key);
                        JsonSerializer.Serialize(
                            writer, item.Value, item.Value?.GetType() ??
                            typeof(object));
                    }
                    writer.WriteEndObject();
                    writer.WriteEndObject();
                }
                writer.WriteEndObject();
                writer.WriteEndObject();
            }

            var json = Encoding.UTF8.GetString(stream.ToArray());

            return(context.Response.WriteAsync(json));
        }
 public WebhooksController(IWebhookService webhookService, IClientConfigOptions clientConfigOptions)
 {
     _webhookService      = webhookService ?? throw new ArgumentNullException(nameof(webhookService));
     _clientConfigOptions = clientConfigOptions ?? throw new ArgumentNullException(nameof(clientConfigOptions));
 }