package message_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 { 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"` 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{ DefaultHost: DefaultBaseURL, DefaultUser: "", DefaultPassword: nil, DefaultToken: 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 }