package pusher import ( "gopkg.in/yaml.v3" "os" ) const ( // DefaultBaseURL is the base URL used to expand short topic names DefaultBaseURL = "https://push.107421.xyz" DefaultBaseToken = "tk_zvdb67fwj1hrjivkq3ga9z7u63av5" DefaultTopic = "cmii" ) // Config is the config struct for a Client type Config struct { Host string `yaml:"default-host"` User string `yaml:"default-user"` Password *string `yaml:"default-password"` Token string `yaml:"default-token"` DefaultCommand string `yaml:"default-command"` DefaultTopic string `yaml:"default-topic"` Subscribe []Subscribe `yaml:"subscribe"` } // Subscribe is the struct for a Subscription within Config type Subscribe struct { Topic string `yaml:"topic"` User *string `yaml:"user"` Password *string `yaml:"password"` Token *string `yaml:"token"` Command string `yaml:"command"` If map[string]string `yaml:"if"` } // NewDefaultConfig creates a new Config struct for a Client func NewDefaultConfig() *Config { return &Config{ Host: DefaultBaseURL, User: "", Password: nil, Token: DefaultBaseToken, DefaultTopic: DefaultTopic, 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 := NewDefaultConfig() if err := yaml.Unmarshal(b, c); err != nil { return nil, err } return c, nil }