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>
53 lines
1.1 KiB
Go
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)
|
|
}
|