ntfy/client/config.go

59 lines
1.5 KiB
Go
Raw Normal View History

2021-12-18 22:43:27 +03:00
package client
2021-12-22 15:46:17 +03:00
import (
"gopkg.in/yaml.v2"
"heckel.io/ntfy/v2/log"
2021-12-22 15:46:17 +03:00
"os"
)
2021-12-18 22:43:27 +03:00
const (
// DefaultBaseURL is the base URL used to expand short topic names
2021-12-18 22:43:27 +03:00
DefaultBaseURL = "https://ntfy.sh"
)
// Config is the config struct for a Client
2021-12-18 22:43:27 +03:00
type Config struct {
DefaultHost string `yaml:"default-host"`
DefaultUser string `yaml:"default-user"`
DefaultPassword *string `yaml:"default-password"`
DefaultToken string `yaml:"default-token"`
DefaultCommand string `yaml:"default-command"`
Subscribe []Subscribe `yaml:"subscribe"`
}
// Subscribe is the struct for a Subscription within Config
type Subscribe struct {
Topic string `yaml:"topic"`
2023-08-07 07:44:35 +03:00
User *string `yaml:"user"`
Password *string `yaml:"password"`
2023-08-07 07:44:35 +03:00
Token *string `yaml:"token"`
Command string `yaml:"command"`
If map[string]string `yaml:"if"`
2021-12-18 22:43:27 +03:00
}
// NewConfig creates a new Config struct for a Client
2021-12-18 22:43:27 +03:00
func NewConfig() *Config {
return &Config{
DefaultHost: DefaultBaseURL,
DefaultUser: "",
DefaultPassword: nil,
DefaultToken: "",
DefaultCommand: "",
Subscribe: nil,
2021-12-18 22:43:27 +03:00
}
}
2021-12-22 15:46:17 +03:00
// LoadConfig loads the Client config from a yaml file
func LoadConfig(filename string) (*Config, error) {
log.Debug("Loading client config from %s", filename)
2021-12-22 15:46:17 +03:00
b, err := os.ReadFile(filename)
if err != nil {
return nil, err
}
c := NewConfig()
if err := yaml.Unmarshal(b, c); err != nil {
return nil, err
}
return c, nil
}