60 lines
1.3 KiB
Go
60 lines
1.3 KiB
Go
|
package config
|
||
|
|
||
|
import (
|
||
|
"log"
|
||
|
"os"
|
||
|
"strconv"
|
||
|
|
||
|
"github.com/joho/godotenv"
|
||
|
)
|
||
|
|
||
|
// InitConfig Structure for program initialisation
|
||
|
type InitConfig struct {
|
||
|
ListenAddress string
|
||
|
RedisAddress string
|
||
|
RedisUser string
|
||
|
RedisPassword string
|
||
|
RedisDB int
|
||
|
UrlLength uint8
|
||
|
}
|
||
|
|
||
|
// GetConfig Initialise configuration form .env
|
||
|
func GetConfig() InitConfig {
|
||
|
err := godotenv.Load()
|
||
|
if err != nil {
|
||
|
log.Fatalf("Error loading .env file: %v", err)
|
||
|
}
|
||
|
|
||
|
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")
|
||
|
}
|
||
|
|
||
|
if urlLength > 255 {
|
||
|
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,
|
||
|
UrlLength: uint8(urlLength),
|
||
|
}
|
||
|
}
|