Make garmin optional

This commit is contained in:
Ian Gulliver
2025-12-23 12:13:32 -08:00
parent ff2247de22
commit 507cc1a7e0

62
main.go
View File

@@ -18,7 +18,7 @@ type PHandler struct {
mux *http.ServeMux mux *http.ServeMux
} }
func NewPHandler(pdRoutingKey, garminApiKey, garminIMEI, garminSender string) (*PHandler, error) { func NewPHandler(pdRoutingKey, garminAPIKey, garminIMEI, garminSender string) (*PHandler, error) {
tmpl := template.New("index.html") tmpl := template.New("index.html")
tmpl.Funcs(template.FuncMap{ tmpl.Funcs(template.FuncMap{
@@ -33,12 +33,15 @@ func NewPHandler(pdRoutingKey, garminApiKey, garminIMEI, garminSender string) (*
ph := &PHandler{ ph := &PHandler{
tmpl: tmpl, tmpl: tmpl,
pd: newPDClient(pdRoutingKey), pd: newPDClient(pdRoutingKey),
gc: newGarminClient(garminApiKey),
garminIMEI: garminIMEI, garminIMEI: garminIMEI,
garminSender: garminSender, garminSender: garminSender,
mux: http.NewServeMux(), mux: http.NewServeMux(),
} }
if garminAPIKey != "" {
ph.gc = newGarminClient(garminAPIKey)
}
ph.mux.HandleFunc("/{$}", ph.serveRoot) ph.mux.HandleFunc("/{$}", ph.serveRoot)
return ph, nil return ph, nil
@@ -79,25 +82,35 @@ func (ph *PHandler) serveRoot(w http.ResponseWriter, r *http.Request) {
func (ph *PHandler) sendAlert(m string) error { func (ph *PHandler) sendAlert(m string) error {
res := make(chan error, 2) res := make(chan error, 2)
go func() { target := 0
err := ph.gc.sendMessage(ph.garminIMEI, ph.garminSender, m)
if err != nil {
res <- fmt.Errorf("Error sending to Garmin: %w", err)
} else {
res <- nil
}
}()
go func() { if ph.gc != nil {
err := ph.pd.sendAlert(m) go func() {
if err != nil { err := ph.gc.sendMessage(ph.garminIMEI, ph.garminSender, m)
res <- fmt.Errorf("Error sending to PagerDuty: %w", err) if err != nil {
} else { res <- fmt.Errorf("Error sending to Garmin: %w", err)
res <- nil } else {
} res <- nil
}() }
}()
for i := 0; i < 2; i++ { target += 1
}
{
go func() {
err := ph.pd.sendAlert(m)
if err != nil {
res <- fmt.Errorf("Error sending to PagerDuty: %w", err)
} else {
res <- nil
}
}()
target += 1
}
for i := 0; i < target; i++ {
err := <-res err := <-res
if err != nil { if err != nil {
return err return err
@@ -137,22 +150,19 @@ func main() {
log.Fatalf("please set PD_ROUTING_KEY") log.Fatalf("please set PD_ROUTING_KEY")
} }
garminApiKey := os.Getenv("GARMIN_API_KEY") garminAPIKey := os.Getenv("GARMIN_API_KEY")
if garminApiKey == "" {
log.Fatalf("please set GARMIN_API_KEY")
}
garminIMEI := os.Getenv("GARMIN_IMEI") garminIMEI := os.Getenv("GARMIN_IMEI")
if garminIMEI == "" { if garminAPIKey != "" && garminIMEI == "" {
log.Fatalf("please set GARMIN_IMEI") log.Fatalf("please set GARMIN_IMEI")
} }
garminSender := os.Getenv("GARMIN_SENDER") garminSender := os.Getenv("GARMIN_SENDER")
if garminSender == "" { if garminAPIKey != "" && garminSender == "" {
log.Fatalf("please set GARMIN_SENDER") log.Fatalf("please set GARMIN_SENDER")
} }
ph, err := NewPHandler(pdRoutingKey, garminApiKey, garminIMEI, garminSender) ph, err := NewPHandler(pdRoutingKey, garminAPIKey, garminIMEI, garminSender)
if err != nil { if err != nil {
log.Fatalf("NewPHandler: %s", err) log.Fatalf("NewPHandler: %s", err)
} }