package imadmin import ( "context" "os" "strings" "time" "github.com/gogf/gf/v2/frame/g" ) type Config struct { BaseUrl string `json:"baseUrl"` ServiceId string `json:"serviceId"` ServiceSecret string `json:"serviceSecret"` Timeout time.Duration `json:"timeout"` } func LoadConfig(ctx context.Context) Config { timeout := g.Cfg().MustGet(ctx, "imAdminApi.timeout", "5s").Duration() if timeout <= 0 { timeout = 5 * time.Second } serviceSecret := g.Cfg().MustGet(ctx, "imAdminApi.serviceSecret").String() if strings.HasPrefix(serviceSecret, "${") && strings.HasSuffix(serviceSecret, "}") { serviceSecret = os.Getenv(strings.TrimSuffix(strings.TrimPrefix(serviceSecret, "${"), "}")) } if serviceSecret == "" { serviceSecret = os.Getenv("IM_ADMIN_API_SECRET") } return Config{ BaseUrl: g.Cfg().MustGet(ctx, "imAdminApi.baseUrl").String(), ServiceId: g.Cfg().MustGet(ctx, "imAdminApi.serviceId", "hotgo-admin").String(), ServiceSecret: serviceSecret, Timeout: timeout, } }