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"` InternalBaseUrl string `json:"internalBaseUrl"` InternalServiceName string `json:"internalServiceName"` InternalServiceSecret string `json:"internalServiceSecret"` } 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") } internalSecret := g.Cfg().MustGet(ctx, "imInternalApi.serviceSecret").String() if strings.HasPrefix(internalSecret, "${") && strings.HasSuffix(internalSecret, "}") { internalSecret = os.Getenv(strings.TrimSuffix(strings.TrimPrefix(internalSecret, "${"), "}")) } if internalSecret == "" { internalSecret = os.Getenv("IM_INTERNAL_API_SECRET") } if internalSecret == "" { internalSecret = serviceSecret } baseUrl := g.Cfg().MustGet(ctx, "imAdminApi.baseUrl").String() serviceId := g.Cfg().MustGet(ctx, "imAdminApi.serviceId", "hotgo-admin").String() return Config{ BaseUrl: baseUrl, ServiceId: serviceId, ServiceSecret: serviceSecret, Timeout: timeout, InternalBaseUrl: g.Cfg().MustGet(ctx, "imInternalApi.baseUrl", baseUrl).String(), InternalServiceName: g.Cfg().MustGet(ctx, "imInternalApi.serviceName", serviceId).String(), InternalServiceSecret: internalSecret, } }