package config import ( "os" ) type Config struct { MongoURI string MongoDBName string TMDBAccessToken string JWTSecret string Port string BaseURL string NodeEnv string GmailUser string GmailPassword string LumexURL string AllohaToken string RedAPIBaseURL string RedAPIKey string GoogleClientID string GoogleClientSecret string GoogleRedirectURL string FrontendURL string VibixHost string VibixToken string KPAPIKey string HDVBToken string KPAPIBaseURL string CollapsAPIHost string CollapsToken string VeoVeoHost string VeoVeoToken string } func New() *Config { mongoURI := getMongoURI() return &Config{ MongoURI: mongoURI, MongoDBName: getEnv(EnvMongoDBName, DefaultMongoDBName), TMDBAccessToken: getEnv(EnvTMDBAccessToken, ""), JWTSecret: getEnv(EnvJWTSecret, DefaultJWTSecret), Port: getEnv(EnvPort, DefaultPort), BaseURL: getEnv(EnvBaseURL, DefaultBaseURL), NodeEnv: getEnv(EnvNodeEnv, DefaultNodeEnv), GmailUser: getEnv(EnvGmailUser, ""), GmailPassword: getEnv(EnvGmailPassword, ""), LumexURL: getEnv(EnvLumexURL, ""), AllohaToken: getEnv(EnvAllohaToken, ""), RedAPIBaseURL: getEnv(EnvRedAPIBaseURL, DefaultRedAPIBase), RedAPIKey: getEnv(EnvRedAPIKey, ""), GoogleClientID: getEnv(EnvGoogleClientID, ""), GoogleClientSecret: getEnv(EnvGoogleClientSecret, ""), GoogleRedirectURL: getEnv(EnvGoogleRedirectURL, ""), FrontendURL: getEnv(EnvFrontendURL, ""), VibixHost: getEnv(EnvVibixHost, DefaultVibixHost), KPAPIKey: getEnv(EnvKPAPIKey, ""), HDVBToken: getEnv(EnvHDVBToken, ""), KPAPIBaseURL: getEnv("KPAPI_BASE_URL", DefaultKPAPIBase), CollapsAPIHost: getEnv("COLLAPS_API_HOST", ""), CollapsToken: getEnv("COLLAPS_TOKEN", ""), VeoVeoHost: getEnv("VEOVEO_HOST", ""), VeoVeoToken: getEnv("VEOVEO_TOKEN", ""), } } func getMongoURI() string { for _, envVar := range []string{"MONGO_URI", "MONGODB_URI", "DATABASE_URL", "MONGO_URL"} { if value := os.Getenv(envVar); value != "" { return value } } return "" } func getEnv(key, defaultValue string) string { if value := os.Getenv(key); value != "" { return value } return defaultValue }