From ec70f46fe06d25514e67ffe11b5830da90e42f75 Mon Sep 17 00:00:00 2001 From: Abdulsamad Sheikh <abdulsas@stud.ntnu.no> Date: Thu, 7 Mar 2024 07:15:57 +0000 Subject: [PATCH] Editetd http requests --- handlers/handlers.go | 42 +++++++++++++++++++++++++++++++++++------- 1 file changed, 35 insertions(+), 7 deletions(-) diff --git a/handlers/handlers.go b/handlers/handlers.go index 47d87f8..ecb24ac 100644 --- a/handlers/handlers.go +++ b/handlers/handlers.go @@ -109,14 +109,42 @@ func ReadershipHandler(w http.ResponseWriter, r *http.Request) { } func StatusHandler(w http.ResponseWriter, r *http.Request) { - status := models.ServiceStatus{ - GutendexAPI: services.CheckServiceAvailability("http://129.241.150.113:8000/books/"), - LanguageAPI: services.CheckServiceAvailability("http://129.241.150.113:3000/language2countries/"), - CountriesAPI: services.CheckServiceAvailability("http://129.241.150.113:8080/v3.1/"), - Version: "v1", - Uptime: services.GetUptime(), // Implement GetUptime in services package + // Initialize a variable to track the start time of the service if not already done + // This should ideally be done at the application start, not here + // Assuming services.ServiceStartTime is the time when your service started + + // Define the URLs for the services to check + gutendexURL := "http://129.241.150.113:8000/books/" + languageURL := "http://129.241.150.113:3000/language2countries/" + countriesURL := "http://129.241.150.113:8080/v3.1/" + + // Use the CheckServiceAvailability function to get the status codes + gutendexStatus := services.CheckServiceAvailability(gutendexURL) + languageStatus := services.CheckServiceAvailability(languageURL) + countriesStatus := services.CheckServiceAvailability(countriesURL) + + // Calculate uptime + uptime := int64(time.Since(services.ServiceStartTime).Seconds()) + + // Create a response struct + statusResponse := struct { + GutendexAPI int `json:"gutendexapi"` + LanguageAPI int `json:"languageapi"` + CountriesAPI int `json:"countriesapi"` + Version string `json:"version"` + Uptime int64 `json:"uptime"` + }{ + GutendexAPI: gutendexStatus, + LanguageAPI: languageStatus, + CountriesAPI: countriesStatus, + Version: "v1", + Uptime: uptime, } + // Set the header and encode the response as JSON w.Header().Set("Content-Type", "application/json") - json.NewEncoder(w).Encode(status) + if err := json.NewEncoder(w).Encode(statusResponse); err != nil { + http.Error(w, err.Error(), http.StatusInternalServerError) + return + } } -- GitLab