package client import ( "gopkg.in/yaml.v2" "os" ) const ( // DefaultBaseURL is the base URL used to expand short topic names DefaultBaseURL = "https://ntfy.sh" ) // Config is the config struct for a Client type Config struct { DefaultHost string `yaml:"default-host"` DefaultUser string `yaml:"default-user"` DefaultPassword string `yaml:"default-password"` DefaultCommand string `yaml:"default-command"` Subscribe []struct { Topic string `yaml:"topic"` User string `yaml:"user"` Password string `yaml:"password"` Command string `yaml:"command"` If map[string]string `yaml:"if"` } `yaml:"subscribe"` } // NewConfig creates a new Config struct for a Client func NewConfig() *Config { return &Config{ DefaultHost: DefaultBaseURL, DefaultUser: "", DefaultPassword: "", DefaultCommand: "", Subscribe: nil, } } // LoadConfig loads the Client config from a yaml file func LoadConfig(filename string) (*Config, error) { 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 }