bird_exporter/parser/helper.go
2022-01-27 12:20:22 +01:00

83 lines
1.2 KiB
Go

package parser
import (
"fmt"
"strconv"
"time"
log "github.com/sirupsen/logrus"
)
var (
nowFunc func() time.Time
)
func init() {
nowFunc = func() time.Time {
return time.Now()
}
}
func overrideNowFunc(f func() time.Time) {
nowFunc = f
}
func currentTime() time.Time {
return nowFunc()
}
func parseInt(value string) int64 {
i, err := strconv.ParseInt(value, 10, 64)
if err != nil {
log.Errorln(err)
return 0
}
return i
}
func parseFloat(value string) float64 {
i, err := strconv.ParseFloat(value, 64)
if err != nil {
log.Errorln(err)
return 0
}
return i
}
func parseUptimeForIso(s string) int {
start, err := time.ParseInLocation("2006-01-02 15:04:05", s, time.Local)
if err != nil {
log.Errorln(err)
return 0
}
return int(currentTime().Sub(start).Seconds())
}
func parseUptimeForDuration(duration []string) int {
h := parseInt(duration[2])
m := parseInt(duration[3])
s := parseInt(duration[4])
str := fmt.Sprintf("%dh%dm%ds", h, m, s)
d, err := time.ParseDuration(str)
if err != nil {
log.Errorln(err)
return 0
}
return int(d.Seconds())
}
func parseUptimeForTimestamp(timestamp string) int {
since := parseInt(timestamp)
s := time.Unix(since, 0)
d := currentTime().Sub(s)
return int(d.Seconds())
}