Slight data structure edit

This commit is contained in:
kacarmichael 2025-05-28 01:18:32 -05:00
parent bbfa5c914f
commit 5781ab7a97
2 changed files with 24 additions and 12 deletions

View File

@ -8,11 +8,16 @@ import (
"time" "time"
) )
var services = []string{ type Domain struct {
"https://git.aaronic.cc", Name string
"https://portainer.aaronic.cc", Protocol string
"https://jellyfin.aaronic.cc", }
"https://dnd.aaronic.cc",
var ServiceItems = map[string]Domain{
"git": {Name: "git.aaronic.cc", Protocol: "https"},
"jellyfin": {Name: "jellyfin.aaronic.cc", Protocol: "https"},
"dnd": {Name: "dnd.aaronic.cc", Protocol: "https"},
"portainer": {Name: "portainer.aaronic.cc", Protocol: "https"},
} }
type HealthChecker struct { type HealthChecker struct {
@ -22,23 +27,24 @@ type HealthChecker struct {
sse *SSEBroker sse *SSEBroker
} }
func NewHealthChecker() *HealthChecker { func NewHealthChecker(broker *SSEBroker) *HealthChecker {
return &HealthChecker{ return &HealthChecker{
status: make(map[string]ServiceStatus), status: make(map[string]ServiceStatus),
client: &http.Client{ client: &http.Client{
Timeout: 5 * time.Second, Timeout: 5 * time.Second,
}, },
sse: NewSSEBroker(), sse: broker,
} }
} }
func (hc *HealthChecker) CheckAll() { func (hc *HealthChecker) CheckAll() {
for _, service := range services { for _, service := range ServiceItems {
go hc.checkService(service) go hc.checkService(service.Protocol + "://" + service.Name)
} }
} }
func (hc *HealthChecker) checkService(url string) { func (hc *HealthChecker) checkService(url string) {
//var url = ServiceItems[service].Protocol + "://" + ServiceItems[service].Name
resp, err := hc.client.Get(url) resp, err := hc.client.Get(url)
status := ServiceStatus{ status := ServiceStatus{
URL: url, URL: url,

12
main.go
View File

@ -10,7 +10,7 @@ import (
func main() { func main() {
sseBroker := NewSSEBroker() sseBroker := NewSSEBroker()
checker := NewHealthChecker() checker := NewHealthChecker(sseBroker)
go func() { go func() {
ticker := time.NewTicker(30 * time.Second) ticker := time.NewTicker(30 * time.Second)
@ -25,7 +25,10 @@ func main() {
if r.URL.Path == "/status" { 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) err := json.NewEncoder(w).Encode(statuses)
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
}
} else if strings.HasPrefix(r.URL.Path, "/status/") { } else if strings.HasPrefix(r.URL.Path, "/status/") {
url := strings.TrimPrefix(r.URL.Path, "/status/") url := strings.TrimPrefix(r.URL.Path, "/status/")
status, ok := checker.GetStatus(url) status, ok := checker.GetStatus(url)
@ -34,7 +37,10 @@ func main() {
return return
} }
w.Header().Set("Content-Type", "application/json") w.Header().Set("Content-Type", "application/json")
json.NewEncoder(w).Encode(status) err := json.NewEncoder(w).Encode(status)
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
}
} }
}) })