load sponsors from api and reload them twice a day

This commit is contained in:
Krzysztof
2025-08-03 11:50:47 +02:00
parent d52f15f1b6
commit 90dadfbc59

View File

@@ -1,19 +1,57 @@
package handler package handler
import ( import (
"encoding/json"
"html/template" "html/template"
"log"
"net/http" "net/http"
"slices"
"time"
"uptimemonitor" "uptimemonitor"
"uptimemonitor/html" "uptimemonitor/html"
) )
var sponsors = []uptimemonitor.Sponsor{ var initialSponsors = []uptimemonitor.Sponsor{
{ {
Name: "AIR Labs", Name: "AIR Labs",
Url: "https://airlabs.pl", Url: "https://airlabs.pl",
Image: "/static/img/airlabs.svg", Image: "/static/img/airlabs.svg",
}, },
} }
var sponsors = []uptimemonitor.Sponsor{}
func init() {
reloadSponsors()
go func() {
t := time.NewTicker(time.Minute * 60 * 12)
for range t.C {
reloadSponsors()
}
}()
}
func reloadSponsors() {
log.Printf("RELOADING SPONSORS")
req, err := http.NewRequest(http.MethodGet, "https://sponsors.uptimemonitor.dev", nil)
if err != nil {
return
}
res, err := http.DefaultClient.Do(req)
if err != nil {
return
}
var data []uptimemonitor.Sponsor
err = json.NewDecoder(res.Body).Decode(&data)
if err != nil {
return
}
sponsors = slices.Concat(initialSponsors, data)
}
func (*Handler) ListSponsors() http.HandlerFunc { func (*Handler) ListSponsors() http.HandlerFunc {
layout := template.Must(template.ParseFS(html.FS, "layout.html")) layout := template.Must(template.ParseFS(html.FS, "layout.html"))