1
0
mirror of https://github.com/muety/wakapi.git synced 2023-08-10 21:12:56 +03:00
wakapi/utils/common.go

71 lines
1.6 KiB
Go
Raw Normal View History

package utils
import (
"errors"
2020-03-31 13:03:49 +03:00
"fmt"
"regexp"
"time"
2019-05-11 18:49:56 +03:00
2020-03-31 13:22:17 +03:00
"github.com/muety/wakapi/models"
)
func ParseDate(date string) (time.Time, error) {
return time.Parse("2006-01-02 15:04:05", date)
}
func FormatDate(date time.Time) string {
return date.Format("2006-01-02 15:04:05")
}
2020-02-20 17:39:56 +03:00
func FormatDateHuman(date time.Time) string {
return date.Format("Mon, 02 Jan 2006 15:04")
}
func ParseUserAgent(ua string) (string, string, error) {
re := regexp.MustCompile(`^wakatime\/[\d+.]+\s\((\w+).*\)\s.+\s(\w+)\/.+$`)
groups := re.FindAllStringSubmatch(ua, -1)
if len(groups) == 0 || len(groups[0]) != 3 {
2019-11-08 01:11:19 +03:00
return "", "", errors.New("failed to parse user agent string")
}
return groups[0][1], groups[0][2], nil
}
2019-05-11 18:49:56 +03:00
func MakeConnectionString(config *models.Config) string {
2020-03-31 13:03:49 +03:00
switch config.DbDialect {
case "mysql":
return mySqlConnectionString(config)
case "postgres":
return postgresConnectionString(config)
2020-03-31 15:43:15 +03:00
case "sqlite3":
return sqliteConnectionString(config)
2020-03-31 13:03:49 +03:00
}
return ""
}
func mySqlConnectionString(config *models.Config) string {
2019-10-10 19:09:50 +03:00
location, _ := time.LoadLocation("Local")
2020-03-31 13:03:49 +03:00
return fmt.Sprintf(
"%s:%s@tcp(%s:%d)/%s?charset=utf8&parseTime=true&loc=%s",
config.DbUser,
config.DbPassword,
config.DbHost,
config.DbPort,
config.DbName,
location.String(),
)
}
func postgresConnectionString(config *models.Config) string {
return fmt.Sprintf("host=%s port=%d user=%s dbname=%s password=%s sslmode=disable",
config.DbHost,
config.DbPort,
config.DbUser,
config.DbName,
config.DbPassword,
)
2019-05-11 18:49:56 +03:00
}
2020-03-31 15:43:15 +03:00
func sqliteConnectionString(config *models.Config) string {
return config.DbName
}