Files
ntfy/tools/fbsend/main.go
Antonio Enrico Russo 693d2d630f do not build fbsend with nofirebase
The nofirebase build tag should remove all build dependencies on
firebase.  The fbsend test tool depends on firebase (and is also only
useful in builds that use firebase).  Hence, disable it.

Signed-off-by: Antonio Enrico Russo <aerusso@aerusso.net>
2025-11-28 09:24:44 -07:00

53 lines
1.1 KiB
Go

//go:build !nofirebase
package main
import (
"context"
firebase "firebase.google.com/go/v4"
"firebase.google.com/go/v4/messaging"
"flag"
"fmt"
"google.golang.org/api/option"
"os"
"strings"
)
func main() {
conffile := flag.String("config", "/etc/fbsend/fbsend.json", "config file")
flag.Parse()
if flag.NArg() < 2 {
fail("Syntax: fbsend [-config FILE] topic key=value ...")
}
topic := flag.Arg(0)
data := make(map[string]string)
for i := 1; i < flag.NArg(); i++ {
kv := strings.SplitN(flag.Arg(i), "=", 2)
if len(kv) != 2 {
fail(fmt.Sprintf("Invalid argument: %s (%v)", flag.Arg(i), kv))
}
data[kv[0]] = kv[1]
}
fb, err := firebase.NewApp(context.Background(), nil, option.WithCredentialsFile(*conffile))
if err != nil {
fail(err.Error())
}
msg, err := fb.Messaging(context.Background())
if err != nil {
fail(err.Error())
}
_, err = msg.Send(context.Background(), &messaging.Message{
Topic: topic,
Data: data,
})
if err != nil {
fail(err.Error())
}
fmt.Println("Sent successfully")
}
func fail(s string) {
fmt.Println(s)
os.Exit(1)
}