package durations import ( "fmt" "strconv" "time" ) // NewDurationFromArg returns a time.Duration from a configuration argument // (string) which has come from the Corefile. The argument has some basic // validation applied before returning a time.Duration. If the argument has no // time unit specified and is numeric the argument will be treated as seconds // rather than GO's default of nanoseconds. func NewDurationFromArg(arg string) (time.Duration, error) { _, err := strconv.Atoi(arg) if err == nil { arg = arg + "s" } d, err := time.ParseDuration(arg) if err != nil { return 0, fmt.Errorf("failed to parse duration '%s'", arg) } return d, nil }