.examples
.github
alerting
client
config
controller
core
ui
ui.go
condition.go
condition_bench_test.go
condition_result.go
condition_test.go
dns.go
dns_test.go
endpoint.go
endpoint_status.go
endpoint_status_test.go
endpoint_test.go
event.go
event_test.go
health_status.go
result.go
result_test.go
uptime.go
docs
jsonpath
metrics
pattern
security
storage
test
util
vendor
watchdog
web
.dockerignore
.gitattributes
.gitignore
Dockerfile
LICENSE
Makefile
README.md
config.yaml
go.mod
go.sum
main.go
61 lines
1.7 KiB
Go
61 lines
1.7 KiB
Go
package ui
|
|
|
|
import "errors"
|
|
|
|
// Config is the UI configuration for core.Endpoint
|
|
type Config struct {
|
|
// HideHostname whether to hide the hostname in the Result
|
|
HideHostname bool `yaml:"hide-hostname"`
|
|
|
|
// HideURL whether to ensure the URL is not displayed in the results. Useful if the URL contains a token.
|
|
HideURL bool `yaml:"hide-url"`
|
|
|
|
// DontResolveFailedConditions whether to resolve failed conditions in the Result for display in the UI
|
|
DontResolveFailedConditions bool `yaml:"dont-resolve-failed-conditions"`
|
|
|
|
// Badge is the configuration for the badges generated
|
|
Badge *Badge `yaml:"badge"`
|
|
}
|
|
|
|
type Badge struct {
|
|
ResponseTime *ResponseTime `yaml:"response-time"`
|
|
}
|
|
|
|
type ResponseTime struct {
|
|
Thresholds []int `yaml:"thresholds"`
|
|
}
|
|
|
|
var (
|
|
ErrInvalidBadgeResponseTimeConfig = errors.New("invalid response time badge configuration: expected parameter 'response-time' to have 5 ascending numerical values")
|
|
)
|
|
|
|
func (config *Config) ValidateAndSetDefaults() error {
|
|
if config.Badge != nil {
|
|
if len(config.Badge.ResponseTime.Thresholds) != 5 {
|
|
return ErrInvalidBadgeResponseTimeConfig
|
|
}
|
|
for i := 4; i > 0; i-- {
|
|
if config.Badge.ResponseTime.Thresholds[i] < config.Badge.ResponseTime.Thresholds[i-1] {
|
|
return ErrInvalidBadgeResponseTimeConfig
|
|
}
|
|
}
|
|
} else {
|
|
config.Badge = GetDefaultConfig().Badge
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// GetDefaultConfig retrieves the default UI configuration
|
|
func GetDefaultConfig() *Config {
|
|
return &Config{
|
|
HideHostname: false,
|
|
HideURL: false,
|
|
DontResolveFailedConditions: false,
|
|
Badge: &Badge{
|
|
ResponseTime: &ResponseTime{
|
|
Thresholds: []int{50, 200, 300, 500, 750},
|
|
},
|
|
},
|
|
}
|
|
}
|