-
Notifications
You must be signed in to change notification settings - Fork 2
/
main.go
69 lines (60 loc) · 2.02 KB
/
main.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
package main
import (
"context"
"log"
"os"
firebase "firebase.google.com/go"
"github.com/Netflix/go-env"
"github.com/joho/godotenv"
"golang.org/x/oauth2/google"
"google.golang.org/api/option"
"github.com/breez/notify/breezsdk"
"github.com/breez/notify/config"
"github.com/breez/notify/http"
)
func main() {
var err error
var firebaseApp *firebase.App
ctx := context.Background()
environment := os.Getenv("NOTIFIER_ENV")
// Read environment variables from breezsdk/cmd/config.env (if the file is available) on Dev environment.
if environment == "development" {
if err = godotenv.Load("config.env"); err != nil && !os.IsNotExist(err) {
log.Fatalln("Error loading .env file")
}
}
var config config.Config
if _, err = env.UnmarshalFromEnviron(&config); err != nil {
log.Fatalf("failed to load config %v", err)
}
if err = config.Validate(); err != nil {
log.Fatalf("failed to validate config %v", err)
}
if _, f := os.LookupEnv("GOOGLE_APPLICATION_CREDENTIALS_JSON"); f {
creds, err := google.CredentialsFromJSON(context.Background(), []byte(os.Getenv("GOOGLE_APPLICATION_CREDENTIALS_JSON")), "https://www.googleapis.com/auth/firebase.messaging")
if err != nil {
log.Fatalf("failed to get google credentials %v", err)
}
firebaseApp, err = firebase.NewApp(context.Background(), nil, option.WithCredentials(creds))
if err != nil {
log.Fatalf("failed to create firebase application %v", err)
}
} else {
projectID := os.Getenv("GOOGLE_CLOUD_PROJECT")
firebaseApp, err = firebase.NewApp(ctx, &firebase.Config{ProjectID: projectID})
if err != nil {
log.Fatalf("failed to create firebase application %v", err)
}
}
fcmMessaging, err := firebaseApp.Messaging(ctx)
if err != nil {
log.Fatalf("failed to create firebase messaging %v", err)
}
notifier, err := breezsdk.NewNotifier(&config, fcmMessaging)
if err != nil {
log.Fatalf("failed to create breezsdk notifier %v", err)
}
if err = http.Run(notifier, &config.HTTPConfig); err != nil {
log.Printf("web server has exited with error")
}
}