nurse/config/endpoints.go

57 lines
878 B
Go
Raw Normal View History

package config
import (
"fmt"
"path"
"strings"
"time"
2022-09-22 09:46:36 +00:00
"code.icb4dc0.de/prskr/nurse/grammar"
)
type Route string
func (r Route) String() string {
val := string(r)
val = strings.Trim(val, "/")
return path.Clean(fmt.Sprintf("/%s", val))
}
type EndpointSpec struct {
CheckTimeout time.Duration
CheckAttempts uint
Checks []grammar.Check
}
2022-05-13 13:38:19 +00:00
func (s EndpointSpec) Timeout(fallback time.Duration) time.Duration {
if s.CheckTimeout != 0 {
return s.CheckTimeout
}
return fallback
}
func (s EndpointSpec) Attempts(fallback uint) uint {
if s.CheckAttempts != 0 {
return s.CheckAttempts
}
return fallback
}
2022-05-13 13:38:19 +00:00
func (s *EndpointSpec) Parse(text string) error {
parser, err := grammar.NewParser[grammar.Script]()
if err != nil {
return err
}
2022-05-13 13:38:19 +00:00
script, err := parser.Parse(text)
if err != nil {
return err
}
2022-05-13 13:38:19 +00:00
s.Checks = script.Checks
return nil
}