Added singular service check method

This commit is contained in:
kacarmichael 2025-05-27 06:15:32 -05:00
parent f23e0bc362
commit bbfa5c914f
2 changed files with 24 additions and 3 deletions

View File

@ -73,3 +73,11 @@ func (hc *HealthChecker) GetStatuses() []ServiceStatus {
return results return results
} }
func (hc *HealthChecker) GetStatus(url string) (ServiceStatus, bool) {
hc.mu.RLock()
defer hc.mu.RUnlock()
status, ok := hc.status[url]
return status, ok
}

13
main.go
View File

@ -4,6 +4,7 @@ import (
"encoding/json" "encoding/json"
"log" "log"
"net/http" "net/http"
"strings"
"time" "time"
) )
@ -21,9 +22,21 @@ func main() {
}() }()
http.HandleFunc("/status", func(w http.ResponseWriter, r *http.Request) { http.HandleFunc("/status", func(w http.ResponseWriter, r *http.Request) {
if r.URL.Path == "/status" {
statuses := checker.GetStatuses() statuses := checker.GetStatuses()
w.Header().Set("Content-Type", "application/json") w.Header().Set("Content-Type", "application/json")
json.NewEncoder(w).Encode(statuses) json.NewEncoder(w).Encode(statuses)
} else if strings.HasPrefix(r.URL.Path, "/status/") {
url := strings.TrimPrefix(r.URL.Path, "/status/")
status, ok := checker.GetStatus(url)
if !ok {
http.Error(w, "Not found", http.StatusNotFound)
return
}
w.Header().Set("Content-Type", "application/json")
json.NewEncoder(w).Encode(status)
}
}) })
http.HandleFunc("/events", func(w http.ResponseWriter, r *http.Request) { http.HandleFunc("/events", func(w http.ResponseWriter, r *http.Request) {