.examples
.github
alerting
api
client
config
controller
core
ui
ui.go
ui_test.go
condition.go
condition_bench_test.go
condition_result.go
condition_test.go
dns.go
dns_test.go
endpoint.go
endpoint_common.go
endpoint_common_test.go
endpoint_status.go
endpoint_status_test.go
endpoint_test.go
event.go
event_test.go
external_endpoint.go
external_endpoint_test.go
result.go
result_test.go
ssh.go
ssh_test.go
uptime.go
docs
jsonpath
metrics
pattern
security
storage
test
testdata
util
watchdog
web
.dockerignore
.gitattributes
.gitignore
Dockerfile
LICENSE
Makefile
README.md
config.yaml
go.mod
go.sum
main.go
66 lines
1.9 KiB
Go
66 lines
1.9 KiB
Go
package ui
|
|
|
|
import "errors"
|
|
|
|
// Config is the UI configuration for core.Endpoint
|
|
type Config struct {
|
|
// HideConditions whether to hide the condition results on the UI
|
|
HideConditions bool `yaml:"hide-conditions"`
|
|
|
|
// 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")
|
|
)
|
|
|
|
// ValidateAndSetDefaults validates the UI configuration and sets the default 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,
|
|
HideConditions: false,
|
|
Badge: &Badge{
|
|
ResponseTime: &ResponseTime{
|
|
Thresholds: []int{50, 200, 300, 500, 750},
|
|
},
|
|
},
|
|
}
|
|
}
|