Files
ProjectOctopus/message_pusher/pusher/config.go

63 lines
1.6 KiB
Go

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
}