75 lines
2.2 KiB
Go
75 lines
2.2 KiB
Go
package mutil
|
|
|
|
import (
|
|
"os"
|
|
"time"
|
|
|
|
"github.com/tech/sendico/pkg/mlogger"
|
|
"go.uber.org/zap"
|
|
)
|
|
|
|
func GetConfigValue(logger mlogger.Logger, varName, envVarName string, value, envValue *string) string {
|
|
if value != nil && envValue != nil {
|
|
logger.Warn("Both variable and environment variable are set, using environment variable value",
|
|
zap.String("variable", varName), zap.String("environment_variable", envVarName), zap.String("value", *value), zap.String("env_value", os.Getenv(*envValue)))
|
|
}
|
|
|
|
if envValue != nil {
|
|
return os.Getenv(*envValue)
|
|
}
|
|
|
|
if value != nil {
|
|
return *value
|
|
}
|
|
|
|
return ""
|
|
}
|
|
|
|
func GetConfigIntValue(logger mlogger.Logger, varName, envVarName string, value *int, envValue *string) int {
|
|
if value != nil && envValue != nil {
|
|
logger.Warn("Both variable and environment variable are set, using environment variable value",
|
|
zap.String("variable", varName), zap.String("environment_variable", envVarName), zap.Int("value", *value), zap.String("env_value", os.Getenv(*envValue)))
|
|
}
|
|
|
|
if envValue != nil {
|
|
envStr := os.Getenv(*envValue)
|
|
if envStr != "" {
|
|
if parsed, err := time.ParseDuration(envStr + "s"); err == nil {
|
|
return int(parsed.Seconds())
|
|
}
|
|
logger.Warn("Invalid environment variable value for timeout", zap.String("environment_variable", envVarName), zap.String("value", envStr))
|
|
}
|
|
}
|
|
|
|
if value != nil {
|
|
return *value
|
|
}
|
|
|
|
return 30 // Default timeout in seconds
|
|
}
|
|
|
|
func GetConfigBoolValue(logger mlogger.Logger, varName, envVarName string, value *bool, envValue *string) bool {
|
|
if value != nil && envValue != nil {
|
|
logger.Warn("Both variable and environment variable are set, using environment variable value",
|
|
zap.String("variable", varName), zap.String("environment_variable", envVarName), zap.Bool("value", *value), zap.String("env_value", os.Getenv(*envValue)))
|
|
}
|
|
|
|
if envValue != nil {
|
|
envStr := os.Getenv(*envValue)
|
|
switch envStr {
|
|
case "true", "1":
|
|
return true
|
|
case "false", "0":
|
|
return false
|
|
default:
|
|
logger.Warn("Invalid environment variable value for boolean", zap.String("environment_variable", envVarName), zap.String("value", envStr))
|
|
}
|
|
}
|
|
|
|
if value != nil {
|
|
return *value
|
|
}
|
|
|
|
return false // Default for boolean
|
|
}
|