2025-10-02 20:35:53 +03:00
|
|
|
package config
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
log "github.com/sirupsen/logrus"
|
|
|
|
|
"os"
|
|
|
|
|
"strconv"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
type Config struct {
|
|
|
|
|
LogLevel string
|
|
|
|
|
NumCPUs int
|
|
|
|
|
CheckPeriod int
|
2025-10-03 19:17:01 +03:00
|
|
|
TasksCfg TasksConfig
|
|
|
|
|
GrpcCfg GrpcConfig
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
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
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func NewConfig() *Config {
|
|
|
|
|
return &Config{
|
|
|
|
|
LogLevel: getEnv("APP_LOG_LEVEL", "debug"),
|
|
|
|
|
NumCPUs: getEnvInt("APP_NUMCPUS", -1),
|
|
|
|
|
CheckPeriod: getEnvInt("APP_CHECK_PERIOD", 6),
|
|
|
|
|
|
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),
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
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
|
|
|
|
|
}
|