mirror of
				https://github.com/coredns/coredns.git
				synced 2025-10-31 10:13:14 -04:00 
			
		
		
		
	
		
			
				
	
	
		
			27 lines
		
	
	
		
			671 B
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			27 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
 | |
| }
 |