This commit is contained in:
82
app/config/config.go
Normal file
82
app/config/config.go
Normal file
@@ -0,0 +1,82 @@
|
||||
/*
|
||||
* Copyright (c) 2025, Антон Аксенов
|
||||
* This file is part of iptvc project
|
||||
* MIT License: https://git.axenov.dev/IPTV/iptvc/src/branch/master/LICENSE
|
||||
*/
|
||||
|
||||
package config
|
||||
|
||||
import (
|
||||
"os"
|
||||
"strconv"
|
||||
)
|
||||
|
||||
// Config описывает конфигурацию
|
||||
type Config struct {
|
||||
DebugMode bool
|
||||
Redis RedisConfig
|
||||
Http HttpConfig
|
||||
}
|
||||
|
||||
// RedisConfig описывает конфигурацию подключения к Redis
|
||||
type RedisConfig struct {
|
||||
Host string
|
||||
Port uint
|
||||
Username string
|
||||
Password string
|
||||
Db uint
|
||||
}
|
||||
|
||||
// HttpConfig описывает конфигурацию веб-сервера
|
||||
type HttpConfig struct {
|
||||
Host string
|
||||
Port uint
|
||||
}
|
||||
|
||||
// Init инициализирует объект конфигурации из переменных окружения
|
||||
func Init() *Config {
|
||||
return &Config{
|
||||
DebugMode: readEnvBoolean("APP_DEBUG", false),
|
||||
Redis: RedisConfig{
|
||||
Host: readEnv("REDIS_HOST", ""),
|
||||
Port: readEnvInteger("REDIS_PORT", 6379),
|
||||
Username: readEnv("REDIS_USERNAME", ""),
|
||||
Password: readEnv("REDIS_PASSWORD", ""),
|
||||
Db: readEnvInteger("REDIS_DB", 0),
|
||||
},
|
||||
Http: HttpConfig{
|
||||
Host: readEnv("HTTP_HOST", "0.0.0.0"),
|
||||
Port: readEnvInteger("HTTP_PORT", 1380),
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
// readEnv считывает строковую переменную окружения с заданным именем или возвращает значение по умолчанию
|
||||
func readEnv(key string, defaultValue string) string {
|
||||
value, exists := os.LookupEnv(key)
|
||||
if exists {
|
||||
return value
|
||||
}
|
||||
|
||||
return defaultValue
|
||||
}
|
||||
|
||||
// readEnvBoolean считывает булеву переменную окружения с заданным именем или возвращает значение по умолчанию
|
||||
func readEnvBoolean(name string, defaultValue bool) bool {
|
||||
valStr := readEnv(name, "")
|
||||
val, err := strconv.ParseBool(valStr)
|
||||
if err == nil {
|
||||
return val
|
||||
}
|
||||
return defaultValue
|
||||
}
|
||||
|
||||
// readEnvInteger считывает целочисленную переменную окружения с заданным именем или возвращает значение по умолчанию
|
||||
func readEnvInteger(name string, defaultValue uint) uint {
|
||||
valueStr := readEnv(name, "")
|
||||
value, err := strconv.Atoi(valueStr)
|
||||
if err == nil {
|
||||
return uint(value)
|
||||
}
|
||||
return defaultValue
|
||||
}
|
||||
Reference in New Issue
Block a user