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)); }