Make garmin optional
This commit is contained in:
62
main.go
62
main.go
@@ -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)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user