Slight data structure edit
This commit is contained in:
parent
bbfa5c914f
commit
5781ab7a97
@ -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
12
main.go
@ -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)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
})
|
})
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user