private async Task <NaosHealthReport> GetJsonAsync() { LoggingFilterContext.Prepare(this.filterContext); var httpClient = this.httpClientFactory.CreateClient("health"); var response = await httpClient.GetAsync("https://localhost:5001/health").AnyContext(); var result = await response.ReadAsAsync <NaosHealthReport>().AnyContext(); if (result != null) { result.CorrelationId = response.GetCorrelationIdHeader(); } else { result = new NaosHealthReport { Status = "Unhealthy", Timestamp = DateTime.UtcNow, CorrelationId = response.GetCorrelationIdHeader() }; } return(result); }
public static NaosHealthReport MapReport(HealthReport report) { if (report == null) { return(new NaosHealthReport()); } var result = new NaosHealthReport { Status = report.Status.ToString(), Duration = report.TotalDuration, Took = report.TotalDuration.Humanize(), Timestamp = DateTime.UtcNow, Entries = new Dictionary <string, NaosHealthReportEntry>() }; foreach (var entry in report.Entries.Safe()) { if (entry.Key == null) { continue; } result.Entries.AddOrUpdate(entry.Key, new NaosHealthReportEntry { Status = entry.Value.Status.ToString(), Description = entry.Value.Description, Tags = entry.Value.Tags, Duration = entry.Value.Duration, Took = entry.Value.Duration.Humanize(), Error = entry.Value.Exception != null ? $"[{entry.Value.Exception.GetType().Name}] {entry.Value.Exception.Message}" : null, Data = entry.Value.Data }); } return(result); }