]> code.octet-stream.net Git - broadcaster/blobdiff - broadcaster-server/config.go
Add licence, etc.
[broadcaster] / broadcaster-server / config.go
diff --git a/broadcaster-server/config.go b/broadcaster-server/config.go
new file mode 100644 (file)
index 0000000..4a4866c
--- /dev/null
@@ -0,0 +1,45 @@
+package main
+
+import (
+       "errors"
+       "log"
+
+       "github.com/BurntSushi/toml"
+)
+
+type ServerConfig struct {
+       BindAddress    string
+       Port           int
+       SqliteDB       string
+       AudioFilesPath string
+}
+
+func NewServerConfig() ServerConfig {
+       return ServerConfig{
+               BindAddress:    "0.0.0.0",
+               Port:           55134,
+               SqliteDB:       "",
+               AudioFilesPath: "",
+       }
+}
+
+func (c *ServerConfig) 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)
+       }
+}
+
+func (c *ServerConfig) Validate() error {
+       if c.SqliteDB == "" {
+               return errors.New("Configuration must provide SqliteDB")
+       }
+       if c.AudioFilesPath == "" {
+               return errors.New("Configuration must provide AudioFilesPath")
+       }
+       return nil
+}