package service import ( json2 "encoding/json" "time" "github.com/IceWhaleTech/CasaOS/model" "github.com/IceWhaleTech/CasaOS/pkg/config" "github.com/IceWhaleTech/CasaOS/pkg/utils/httper" "github.com/tidwall/gjson" ) type CasaService interface { GetCasaosVersion() model.Version } type casaService struct{} /** * @description: get remote version * @return {model.Version} */ func (o *casaService) GetCasaosVersion() model.Version { keyName := "casa_version" var dataStr string var version model.Version if result, ok := Cache.Get(keyName); ok { dataStr, ok = result.(string) if ok { data := gjson.Get(dataStr, "data") json2.Unmarshal([]byte(data.String()), &version) return version } } v := httper.OasisGet(config.ServerInfo.ServerApi + "/v1/sys/version") data := gjson.Get(v, "data") json2.Unmarshal([]byte(data.String()), &version) if len(version.Version) > 0 { Cache.Set(keyName, v, time.Minute*20) } return version } func NewCasaService() CasaService { return &casaService{} }