2021-12-18 19:43:27 +00:00
|
|
|
package client
|
|
|
|
|
2021-12-22 12:46:17 +00:00
|
|
|
import (
|
|
|
|
"gopkg.in/yaml.v2"
|
2024-03-07 20:56:20 +00:00
|
|
|
"heckel.io/ntfy/v2/log"
|
2021-12-22 12:46:17 +00:00
|
|
|
"os"
|
|
|
|
)
|
|
|
|
|
2021-12-18 19:43:27 +00:00
|
|
|
const (
|
2021-12-19 19:27:26 +00:00
|
|
|
// DefaultBaseURL is the base URL used to expand short topic names
|
2021-12-18 19:43:27 +00:00
|
|
|
DefaultBaseURL = "https://ntfy.sh"
|
|
|
|
)
|
|
|
|
|
2021-12-19 19:27:26 +00:00
|
|
|
// Config is the config struct for a Client
|
2021-12-18 19:43:27 +00:00
|
|
|
type Config struct {
|
2023-03-07 01:14:52 +00:00
|
|
|
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 04:44:35 +00:00
|
|
|
User *string `yaml:"user"`
|
2023-03-07 01:14:52 +00:00
|
|
|
Password *string `yaml:"password"`
|
2023-08-07 04:44:35 +00:00
|
|
|
Token *string `yaml:"token"`
|
2023-03-07 01:14:52 +00:00
|
|
|
Command string `yaml:"command"`
|
|
|
|
If map[string]string `yaml:"if"`
|
2021-12-18 19:43:27 +00:00
|
|
|
}
|
|
|
|
|
2021-12-19 19:27:26 +00:00
|
|
|
// NewConfig creates a new Config struct for a Client
|
2021-12-18 19:43:27 +00:00
|
|
|
func NewConfig() *Config {
|
|
|
|
return &Config{
|
2022-07-31 19:12:15 +00:00
|
|
|
DefaultHost: DefaultBaseURL,
|
|
|
|
DefaultUser: "",
|
2022-10-09 13:50:37 +00:00
|
|
|
DefaultPassword: nil,
|
2023-03-06 05:57:51 +00:00
|
|
|
DefaultToken: "",
|
2022-07-31 19:12:15 +00:00
|
|
|
DefaultCommand: "",
|
|
|
|
Subscribe: nil,
|
2021-12-18 19:43:27 +00:00
|
|
|
}
|
|
|
|
}
|
2021-12-22 12:46:17 +00:00
|
|
|
|
|
|
|
// LoadConfig loads the Client config from a yaml file
|
|
|
|
func LoadConfig(filename string) (*Config, error) {
|
2024-03-07 20:56:20 +00:00
|
|
|
log.Debug("Loading client config from %s", filename)
|
2021-12-22 12:46:17 +00: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
|
|
|
|
}
|