68 lines
1.2 KiB
Go
68 lines
1.2 KiB
Go
package util
|
|
|
|
import (
|
|
"bytes"
|
|
"crypto/sha1"
|
|
"encoding/hex"
|
|
"fmt"
|
|
"os"
|
|
"strconv"
|
|
"strings"
|
|
"text/template"
|
|
"time"
|
|
)
|
|
|
|
func Render(file string, data interface{}) ([]byte, error) {
|
|
var (
|
|
rendered *bytes.Buffer
|
|
tmpl *template.Template
|
|
content []byte
|
|
err error
|
|
)
|
|
|
|
if content, err = os.ReadFile(file); err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
if tmpl, err = template.New("template").Parse(string(content)); err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
rendered = bytes.NewBuffer(nil)
|
|
err = tmpl.Execute(rendered, data)
|
|
|
|
return rendered.Bytes(), err
|
|
}
|
|
|
|
func GetDuration(d string) (time.Duration, error) {
|
|
var (
|
|
d_num uint64
|
|
err error
|
|
)
|
|
|
|
d_num_end := d[len(d)-1]
|
|
d_num_str := strings.TrimSuffix(d, string(d_num_end))
|
|
|
|
if d_num, err = strconv.ParseUint(d_num_str, 10, 64); err != nil {
|
|
return 0, err
|
|
}
|
|
|
|
switch d_num_end {
|
|
case 's':
|
|
return time.Duration(d_num) * (time.Second), nil
|
|
|
|
case 'm':
|
|
return time.Duration(d_num) * (time.Second * 60), nil
|
|
|
|
case 'h':
|
|
return time.Duration(d_num) * ((time.Second * 60) * 60), nil
|
|
}
|
|
|
|
return 0, fmt.Errorf("invalid time duration format")
|
|
}
|
|
|
|
func GetSHA1(s string) string {
|
|
hasher := sha1.New()
|
|
return hex.EncodeToString(hasher.Sum([]byte(s)))
|
|
}
|