26 lines
671 B
Go
26 lines
671 B
Go
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
|
|
}
|