package config import ( "github.com/joho/godotenv" "gitlab.com/saburly/kiviscraplib/structures" "log" "os" "strconv" ) var WebServerConfig structures.WebServerConfig var WorkerServerConfig structures.WorkerServerConfig var ClientConfig structures.ClientConfig var defaultClientConfigValues = make(map[string]string) var defaultServerConfigValues = make(map[string]string) func InitServerConfig() { loadEnvVariables() initServerConfigDefaultValues() generateServerConfigObject() } func InitClientConfig() { loadEnvVariables() initClientConfigDefaultValues() generateClientConfigObject() } func loadEnvVariables() { err := godotenv.Load() if err != nil { log.Fatal("Unable to load ENV variables") } } func generateClientConfigObject() { ClientConfig.ConnectionsCount = getInt("CLIENT_CONNECTIONS_COUNT") ClientConfig.ConnectionTimeout = getInt("CLIENT_CONNECTION_TIMEOUT") ClientConfig.WaitingTimeout = getInt("CLIENT_WAITING_TIMEOUT") ClientConfig.WorkerServerAddress = getString("WORKER_SERVER_ADDRESS") ClientConfig.RequestMessagePrefix = getString("REQUEST_MESSAGE_PREFIX") ClientConfig.ProxyListBaseURL = getString("PROXY_LIST_BASE_URL") } func generateServerConfigObject() { WebServerConfig.Address = getString("WEB_SERVER_ADDRESS") WebServerConfig.APIKey = getString("WEB_SERVER_API_KEY") WebServerConfig.Timeout = getInt("WEB_SERVER_TIMEOUT") WorkerServerConfig.Address = getString("WORKER_SERVER_ADDRESS") WorkerServerConfig.WorkersCount = getInt("WORKER_SERVER_WORKERS_COUNT") WorkerServerConfig.RequestMessagePrefix = getString("WORKER_SERVER_REQUEST_MESSAGE_PREFIX") } func initClientConfigDefaultValues() { defaultClientConfigValues["CLIENT_CONNECTIONS_COUNT"] = "5" defaultClientConfigValues["CLIENT_CONNECTION_TIMEOUT"] = "2" defaultClientConfigValues["CLIENT_WAITING_TIMEOUT"] = "60" defaultClientConfigValues["WORKER_SERVER_ADDRESS"] = "127.0.0.1:1338" defaultClientConfigValues["REQUEST_MESSAGE_PREFIX"] = "URL " defaultClientConfigValues["PROXY_LIST_BASE_URL"] = "https://www.proxy-list.download/api/v1/get?type=" } func initServerConfigDefaultValues() { defaultServerConfigValues["WEB_SERVER_ADDRESS"] = "127.0.0.1:1337" defaultServerConfigValues["WEB_SERVER_API_KEY"] = "b8be5a3b639d465039e8fbe7582270a7" defaultServerConfigValues["WEB_SERVER_TIMEOUT"] = "100" defaultServerConfigValues["WORKER_SERVER_ADDRESS"] = "127.0.0.1:1338" defaultServerConfigValues["WORKER_SERVER_WORKERS_COUNT"] = "50" defaultServerConfigValues["WORKER_SERVER_REQUEST_MESSAGE_PREFIX"] = "URL " } func getInt(key string) int { value := os.Getenv(key) if len(value) == 0 { value = defaultClientConfigValues[key] } numericalValue, err := strconv.Atoi(value) if err != nil { log.Fatalf("Cannot convert ENV value for %s to the integer", key) } return numericalValue } func getString(key string) string { value := os.Getenv(key) if len(value) == 0 { return defaultClientConfigValues[key] } return value }