task-processor/config/config.go

98 lines
2.3 KiB
Go
Raw Permalink Normal View History

2025-10-02 20:35:53 +03:00
package config
import (
log "github.com/sirupsen/logrus"
"os"
"strconv"
)
type Config struct {
2025-12-26 16:19:09 +03:00
LogLevel string
NumCPUs int
CheckPeriod int
TasksCfg TasksConfig
GrpcCfg GrpcConfig
OriginEnabled OriginEnabled
ExternalBrowser string
2025-10-03 19:17:01 +03:00
}
type GrpcConfig struct {
ServerHost string
ServerPort string
ApiClientHost string
ApiClientPort string
SurugayaScrapperHost string
SurugayaScrapperPort string
2025-10-02 20:35:53 +03:00
}
type TasksConfig struct {
RetryCount int
RetryMinutes int
}
2025-12-26 16:19:09 +03:00
type OriginEnabled struct {
Surugaya bool
Mandarake bool
Amiami bool
}
2025-10-02 20:35:53 +03:00
func NewConfig() *Config {
return &Config{
2025-12-26 16:19:09 +03:00
LogLevel: getEnv("APP_LOG_LEVEL", "debug"),
NumCPUs: getEnvInt("APP_NUMCPUS", -1),
CheckPeriod: getEnvInt("APP_CHECK_PERIOD", 6),
ExternalBrowser: getEnv("EXTERNAL_BROWSER", ""),
2025-10-02 20:35:53 +03:00
2025-10-03 19:17:01 +03:00
GrpcCfg: GrpcConfig{
ServerHost: getEnv("GRPC_SERVER_HOST", "0.0.0.0"),
ServerPort: getEnv("GRPC_SERVER_PORT", "9060"),
ApiClientHost: getEnv("GRPC_API_CLIENT_HOST", "0.0.0.0"),
ApiClientPort: getEnv("GRPC_API_CLIENT_PORT", "9050"),
2025-10-05 13:10:43 +03:00
SurugayaScrapperHost: getEnv("GRPC_SURUGAYA_SCRAPPER_HOST", "0.0.0.0"),
SurugayaScrapperPort: getEnv("GRPC_SURUGAYA_SCRAPPER_PORT", "9070"),
2025-10-03 19:17:01 +03:00
},
TasksCfg: TasksConfig{
2025-10-02 20:35:53 +03:00
RetryCount: getEnvInt("TASK_RETRY_COUNT", 3),
RetryMinutes: getEnvInt("TASK_RETRY_MINUTES", 5),
},
2025-12-26 16:19:09 +03:00
OriginEnabled: OriginEnabled{
Surugaya: getEnvBool("ORIGIN_SURUGAYA_ENABLED", false),
Mandarake: getEnvBool("ORIGIN_MANDARAKE_ENABLED", false),
Amiami: getEnvBool("ORIGIN_AMIAMI_ENABLED", false),
},
2025-10-02 20:35:53 +03:00
}
}
func getEnv(key, fallback string) string {
if value, ok := os.LookupEnv(key); ok {
return value
}
return fallback
}
func getEnvInt(key string, fallback int) int {
if value, ok := os.LookupEnv(key); ok {
num, err := strconv.Atoi(value)
if err != nil {
log.WithField("default", -1).Warn("Config | Can't parse value as int")
return fallback
}
return num
}
return fallback
}
2025-12-26 16:19:09 +03:00
func getEnvBool(key string, fallback bool) bool {
if value, ok := os.LookupEnv(key); ok {
val, err := strconv.ParseBool(value)
if err != nil {
log.WithField("default", false).Warn("Config | Can't parse value as bool")
return fallback
}
return val
}
return fallback
}