github.com/choria-io/go-choria@v0.28.1-0.20240416190746-b3bf9c7d5a45/validator/duration/duration.go (about) 1 // Copyright (c) 2020-2021, R.I. Pienaar and the Choria Project contributors 2 // 3 // SPDX-License-Identifier: Apache-2.0 4 5 package duration 6 7 import ( 8 "fmt" 9 "reflect" 10 "time" 11 ) 12 13 // ValidateString validates that input is a valid duration 14 func ValidateString(input string) (bool, error) { 15 _, err := time.ParseDuration(input) 16 if err != nil { 17 return false, err 18 } 19 20 return true, nil 21 } 22 23 // ValidateStructField validates a struct field holds a valid duration 24 func ValidateStructField(value reflect.Value, tag string) (bool, error) { 25 if value.Kind() != reflect.String { 26 return false, fmt.Errorf("only strings can be Duration validated") 27 } 28 29 return ValidateString(value.String()) 30 }