diff --git a/garmin.go b/garmin.go index fde4dd5..35fcba3 100644 --- a/garmin.go +++ b/garmin.go @@ -37,12 +37,12 @@ func newGarminClient(apiKey string) *garminClient { } } -func (gc *garminClient) sendMessage(imei, sender, msg string) error { +func (gc *garminClient) sendMessage(imeis []string, sender, msg string) error { buf := &bytes.Buffer{} err := json.NewEncoder(buf).Encode(garminMessageRequest{ Messages: []garminMessage{ { - Recipients: []string{imei}, + Recipients: imeis, Sender: sender, Timestamp: time.Now().UTC().Format("2006-01-02T15:04:05Z"), Message: msg, @@ -84,8 +84,8 @@ func (gc *garminClient) sendMessage(imei, sender, msg string) error { log.Printf("[<-garmin] %s", string(body)) - if grResp.Count != 1 { - return fmt.Errorf("expected 1 message, got %d", grResp.Count) + if grResp.Count != len(imeis) { + return fmt.Errorf("expected %d messages, got %d", len(imeis), grResp.Count) } return nil diff --git a/main.go b/main.go index a7c528e..4be66e9 100644 --- a/main.go +++ b/main.go @@ -13,12 +13,12 @@ type PHandler struct { tmpl *template.Template pd *pdClient gc *garminClient - garminIMEI string + garminIMEIs []string garminSender string mux *http.ServeMux } -func NewPHandler(pdRoutingKey, garminAPIKey, garminIMEI, garminSender string) (*PHandler, error) { +func NewPHandler(pdRoutingKey, garminAPIKey string, garminIMEIs []string, garminSender string) (*PHandler, error) { tmpl := template.New("index.html") tmpl.Funcs(template.FuncMap{ @@ -33,7 +33,7 @@ func NewPHandler(pdRoutingKey, garminAPIKey, garminIMEI, garminSender string) (* ph := &PHandler{ tmpl: tmpl, pd: newPDClient(pdRoutingKey), - garminIMEI: garminIMEI, + garminIMEIs: garminIMEIs, garminSender: garminSender, mux: http.NewServeMux(), } @@ -86,7 +86,7 @@ func (ph *PHandler) sendAlert(m string) error { if ph.gc != nil { go func() { - err := ph.gc.sendMessage(ph.garminIMEI, ph.garminSender, m) + err := ph.gc.sendMessage(ph.garminIMEIs, ph.garminSender, m) if err != nil { res <- fmt.Errorf("Error sending to Garmin: %w", err) } else { @@ -152,17 +152,26 @@ func main() { garminAPIKey := os.Getenv("GARMIN_API_KEY") - garminIMEI := os.Getenv("GARMIN_IMEI") - if garminAPIKey != "" && garminIMEI == "" { + garminIMEIStr := os.Getenv("GARMIN_IMEI") + if garminAPIKey != "" && garminIMEIStr == "" { log.Fatalf("please set GARMIN_IMEI") } + var garminIMEIs []string + if garminIMEIStr != "" { + for _, imei := range strings.Split(garminIMEIStr, ",") { + imei = strings.TrimSpace(imei) + if imei != "" { + garminIMEIs = append(garminIMEIs, imei) + } + } + } garminSender := os.Getenv("GARMIN_SENDER") if garminAPIKey != "" && garminSender == "" { log.Fatalf("please set GARMIN_SENDER") } - ph, err := NewPHandler(pdRoutingKey, garminAPIKey, garminIMEI, garminSender) + ph, err := NewPHandler(pdRoutingKey, garminAPIKey, garminIMEIs, garminSender) if err != nil { log.Fatalf("NewPHandler: %s", err) }