+++ /dev/null
-package main
-
-import (
- "errors"
- "log"
- "os"
- "strings"
-
- "github.com/BurntSushi/toml"
-)
-
-type RadioConfig struct {
- GpioDevice string
- PTTPin int
- COSPin int
- ServerURL string
- Token string
- CachePath string
- TimeZone string
-}
-
-func NewRadioConfig() RadioConfig {
- return RadioConfig{
- GpioDevice: "gpiochip0",
- PTTPin: -1,
- COSPin: -1,
- ServerURL: "",
- Token: "",
- CachePath: "",
- TimeZone: "Australia/Hobart",
- }
-}
-
-func (c *RadioConfig) LoadFromFile(path string) {
- _, err := toml.DecodeFile(path, &c)
- if err != nil {
- log.Fatal("could not read config file for reading at path:", path, err)
- }
- err = c.Validate()
- if err != nil {
- log.Fatal(err)
- }
- c.ApplyDefaults()
-}
-
-func (c *RadioConfig) Validate() error {
- if c.ServerURL == "" {
- return errors.New("ServerURL must be provided in the configuration")
- }
- if c.Token == "" {
- return errors.New("Token must be provided in the configuration")
- }
- return nil
-}
-
-func (c *RadioConfig) ApplyDefaults() {
- if c.CachePath == "" {
- dir, err := os.MkdirTemp("", "broadcast")
- if err != nil {
- log.Fatal(err)
- }
- c.CachePath = dir
- }
-}
-
-func (c *RadioConfig) WebsocketURL() string {
- addr := strings.Replace(c.ServerURL, "https://", "wss://", -1)
- addr = strings.Replace(addr, "http://", "ws://", -1)
- return addr + "/radiosync"
-}