Files
iptvc/app/config/config.go
AnthonyAxenov d15d4f47b6
All checks were successful
release / release (push) Successful in 5m47s
Initial commit
2025-05-06 10:45:37 +08:00

83 lines
2.3 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
* 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
}