plakken/internal/config/config.go

55 lines
1.2 KiB
Go
Raw Normal View History

package config
import (
"log"
"os"
"strconv"
2024-04-10 17:34:36 +00:00
"git.gnous.eu/gnouseu/plakken/internal/constant"
)
2024-04-10 17:34:36 +00:00
// InitConfig Structure for program initialisation.
type InitConfig struct {
ListenAddress string
RedisAddress string
RedisUser string
RedisPassword string
RedisDB int
2024-04-10 17:34:36 +00:00
URLLength uint8
}
2024-04-10 17:34:36 +00:00
// GetConfig Initialise configuration form .env.
func GetConfig() InitConfig {
listenAddress := os.Getenv("PLAKKEN_LISTEN")
redisAddress := os.Getenv("PLAKKEN_REDIS_ADDRESS")
db := os.Getenv("PLAKKEN_REDIS_DB")
uLen := os.Getenv("PLAKKEN_URL_LENGTH")
if listenAddress == "" || redisAddress == "" {
log.Fatal("Missing or invalid listenAddress or PLAKKEN_REDIS_ADDRESS")
}
redisDB, err := strconv.Atoi(db)
if err != nil {
log.Fatal("Invalid PLAKKEN_REDIS_DB")
}
urlLength, err := strconv.Atoi(uLen)
if err != nil {
log.Fatal("Invalid PLAKKEN_URL_LENGTH")
}
2024-04-10 17:34:36 +00:00
if urlLength > constant.MaxURLLength {
log.Fatal("PLAKKEN_URL_LENGTH cannot be greater than 255")
}
return InitConfig{
ListenAddress: listenAddress,
RedisAddress: redisAddress,
RedisUser: os.Getenv("PLAKKEN_REDIS_USER"),
RedisPassword: os.Getenv("PLAKKEN_REDIS_PASSWORD"),
RedisDB: redisDB,
2024-04-10 17:34:36 +00:00
URLLength: uint8(urlLength),
}
}