package config import ( "os" "strconv" "sync" ) type Config struct { BaseURL string Username string Password string Semester string TWFID string } var ( cfg *Config cfgOnce sync.Once ) func Load() *Config { cfgOnce.Do(func() { cfg = &Config{ BaseURL: getEnv("JWTS_BASE_URL", "http://jwts.hitwh.edu.cn"), Username: getEnv("JWTS_USERNAME", "2024212193"), Password: getEnv("JWTS_PASSWORD", "wyb12580963"), Semester: getEnv("JWTS_SEMESTER", "2025-20262"), TWFID: getEnv("JWTS_TWFID", ""), } }) return cfg } func Get() *Config { if cfg == nil { return Load() } return cfg } func getEnv(key, defaultValue string) string { val := os.Getenv(key) if val == "" { return defaultValue } return val } func getEnvInt(key string, defaultValue int) int { val := os.Getenv(key) if val == "" { return defaultValue } if i, err := strconv.Atoi(val); err == nil { return i } return defaultValue } var ( BaseURL = Get().BaseURL Username = Get().Username Password = Get().Password Semester = Get().Semester TWFID = Get().TWFID )