Files
Assistant/cmd/notification-receiver/main.go
m 6e0040fe89
CI / test (pull_request) Successful in 12s
CI / test (push) Successful in 10s
feat: add notification delivery foundation
2026-08-16 19:08:07 +03:00

53 lines
1.1 KiB
Go

package main
import (
"fmt"
"log"
"net/http"
"os"
"strings"
"time"
)
func main() {
addr := envOr("LISTEN_ADDR", ":8085")
writeToken, err := readSecretFile("RECEIVER_WRITE_TOKEN_FILE")
if err != nil {
log.Fatal(err)
}
readToken, err := readSecretFile("RECEIVER_READ_TOKEN_FILE")
if err != nil {
log.Fatal(err)
}
server, err := newReceiverServer(envOr("RECEIPT_DIRECTORY", "/var/lib/notification-receiver"), writeToken, readToken, time.Now)
if err != nil {
log.Fatal(err)
}
log.Printf("notification-receiver listening on %s", addr)
if err = http.ListenAndServe(addr, server.routes()); err != nil {
log.Fatal(err)
}
}
func readSecretFile(name string) (string, error) {
path := os.Getenv(name)
if path == "" {
return "", fmt.Errorf("%s is required", name)
}
value, err := os.ReadFile(path)
if err != nil {
return "", fmt.Errorf("read %s: %w", name, err)
}
secret := strings.TrimSpace(string(value))
if secret == "" {
return "", fmt.Errorf("%s is empty", name)
}
return secret, nil
}
func envOr(name, fallback string) string {
if value := os.Getenv(name); value != "" {
return value
}
return fallback
}