45 lines
765 B
Go
45 lines
765 B
Go
// Copyright (C) 2019 Marius Schellenberger
|
|
|
|
package server
|
|
|
|
import (
|
|
"errors"
|
|
"strconv"
|
|
"time"
|
|
)
|
|
|
|
const (
|
|
day = time.Hour * 24
|
|
min = time.Second * 30
|
|
max = day * 90
|
|
)
|
|
|
|
func duration(duration, mode string) (d time.Duration, err error) {
|
|
switch mode {
|
|
case "1":
|
|
d, err = time.ParseDuration(duration)
|
|
if err != nil {
|
|
err = errors.New("could not parse duration")
|
|
return
|
|
}
|
|
case "2":
|
|
var t int
|
|
t, err = strconv.Atoi(duration)
|
|
if err != nil {
|
|
err = errors.New("could not parse duration")
|
|
return
|
|
}
|
|
d = time.Duration(int(day) * t)
|
|
default:
|
|
err = errors.New("invalid mode")
|
|
return
|
|
}
|
|
|
|
if d < min {
|
|
err = errors.New("minimum duration is 30 seconds")
|
|
}
|
|
if d > max {
|
|
err = errors.New("maximum duration is 90 days")
|
|
}
|
|
return
|
|
}
|