From becc17202bddf04c20401d5806dd9a00a1d9ca82 Mon Sep 17 00:00:00 2001 From: TwinProduction Date: Thu, 2 Sep 2021 15:21:13 -0400 Subject: [PATCH] Remove uptime from /api/v1/services/{key}/statuses and return the entire service status instead of a map --- controller/controller.go | 18 +----------------- core/service_status.go | 14 +++----------- web/app/src/views/Details.vue | 2 +- 3 files changed, 5 insertions(+), 29 deletions(-) diff --git a/controller/controller.go b/controller/controller.go index 04a978d3..fb735d12 100644 --- a/controller/controller.go +++ b/controller/controller.go @@ -154,23 +154,7 @@ func serviceStatusHandler(writer http.ResponseWriter, r *http.Request) { _, _ = writer.Write([]byte("not found")) return } - uptime7Days, _ := storage.Get().GetUptimeByKey(vars["key"], time.Now().Add(-24*7*time.Hour), time.Now()) - uptime24Hours, _ := storage.Get().GetUptimeByKey(vars["key"], time.Now().Add(-24*time.Hour), time.Now()) - uptime1Hour, _ := storage.Get().GetUptimeByKey(vars["key"], time.Now().Add(-time.Hour), time.Now()) - data := map[string]interface{}{ - "serviceStatus": serviceStatus, - // The following fields, while present on core.ServiceStatus, are annotated to remain hidden so that we can - // expose only the necessary data on /api/v1/statuses. - // Since the /api/v1/statuses/{key} endpoint does need this data, however, we explicitly expose it here - "events": serviceStatus.Events, - // TODO: remove this in v3.0.0. Not used by front-end, only used for API. Left here for v2.x.x backward compatibility - "uptime": map[string]float64{ - "7d": uptime7Days, - "24h": uptime24Hours, - "1h": uptime1Hour, - }, - } - output, err := json.Marshal(data) + output, err := json.Marshal(serviceStatus) if err != nil { log.Printf("[controller][serviceStatusHandler] Unable to marshal object to JSON: %s", err.Error()) writer.WriteHeader(http.StatusInternalServerError) diff --git a/core/service_status.go b/core/service_status.go index 30ff01a5..5087376f 100644 --- a/core/service_status.go +++ b/core/service_status.go @@ -15,21 +15,13 @@ type ServiceStatus struct { Results []*Result `json:"results"` // Events is a list of events - // - // We don't expose this through JSON, because the main dashboard doesn't need to have this data. - // However, the detailed service page does leverage this by including it to a map that will be - // marshalled alongside the ServiceStatus. - Events []*Event `json:"-"` + Events []*Event `json:"events"` // Uptime information on the service's uptime // - // We don't expose this through JSON, because the main dashboard doesn't need to have this data. - // However, the detailed service page does leverage this by including it to a map that will be - // marshalled alongside the ServiceStatus. + // Used by the memory store. // - // TODO: Get rid of this in favor of using the new store.GetUptimeByKey. - // TODO: For memory, store the uptime in a different map? (is that possible, given that we need to persist it through gocache?) - // Deprecated + // To retrieve the uptime between two time, use store.GetUptimeByKey. Uptime *Uptime `json:"-"` } diff --git a/web/app/src/views/Details.vue b/web/app/src/views/Details.vue index 0b8c95ec..89d3dec6 100644 --- a/web/app/src/views/Details.vue +++ b/web/app/src/views/Details.vue @@ -108,7 +108,7 @@ export default { .then(response => response.json()) .then(data => { if (JSON.stringify(this.serviceStatus) !== JSON.stringify(data)) { - this.serviceStatus = data.serviceStatus; + this.serviceStatus = data; this.uptime = data.uptime; let events = []; for (let i = data.events.length - 1; i >= 0; i--) {