1
0
mirror of https://github.com/taigrr/wtf synced 2025-01-18 04:03:14 -08:00
wtf/modules/hibp/settings.go

75 lines
1.7 KiB
Go

package hibp
import (
"time"
"github.com/olebedev/config"
"github.com/wtfutil/wtf/cfg"
"github.com/wtfutil/wtf/wtf"
)
const (
defaultTitle = "HIBP"
minRefreshInterval = 21600 // Six hours
)
type colors struct {
ok string
pwned string
}
// Settings defines the configuration properties for this module
type Settings struct {
colors
common *cfg.Common
accounts []string
since string
}
// NewSettingsFromYAML creates a new settings instance from a YAML config block
func NewSettingsFromYAML(name string, ymlConfig *config.Config, globalConfig *config.Config) *Settings {
settings := Settings{
common: cfg.NewCommonSettingsFromModule(name, defaultTitle, ymlConfig, globalConfig),
accounts: wtf.ToStrs(ymlConfig.UList("accounts")),
since: ymlConfig.UString("since", ""),
}
settings.colors.ok = ymlConfig.UString("colors.ok", "green")
settings.colors.pwned = ymlConfig.UString("colors.pwned", "red")
// HIBP data doesn't need to be reloaded very often so to be gentle on this API we
// enforce a minimum refresh interval
if settings.common.RefreshInterval < minRefreshInterval {
settings.common.RefreshInterval = minRefreshInterval
}
return &settings
}
// HasSince returns TRUE if there's a valid "since" value setting, FALSE if there is not
func (sett *Settings) HasSince() bool {
if sett.since == "" {
return false
}
_, err := sett.SinceDate()
if err != nil {
return false
}
return true
}
// SinceDate returns the "since" settings as a proper Time instance
func (sett *Settings) SinceDate() (time.Time, error) {
dt, err := time.Parse("2006-01-02", sett.since)
if err != nil {
return time.Now(), err
}
return dt, nil
}