casa.go 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. package service
  2. import (
  3. json2 "encoding/json"
  4. "time"
  5. "github.com/IceWhaleTech/CasaOS/model"
  6. "github.com/IceWhaleTech/CasaOS/pkg/config"
  7. "github.com/IceWhaleTech/CasaOS/pkg/utils/httper"
  8. "github.com/tidwall/gjson"
  9. )
  10. type CasaService interface {
  11. GetCasaosVersion() model.Version
  12. }
  13. type casaService struct{}
  14. /**
  15. * @description: get remote version
  16. * @return {model.Version}
  17. */
  18. func (o *casaService) GetCasaosVersion() model.Version {
  19. keyName := "casa_version"
  20. var dataStr string
  21. var version model.Version
  22. if result, ok := Cache.Get(keyName); ok {
  23. dataStr, ok = result.(string)
  24. if ok {
  25. data := gjson.Get(dataStr, "data")
  26. json2.Unmarshal([]byte(data.String()), &version)
  27. return version
  28. }
  29. }
  30. v := httper.OasisGet(config.ServerInfo.ServerApi + "/v1/sys/version")
  31. data := gjson.Get(v, "data")
  32. json2.Unmarshal([]byte(data.String()), &version)
  33. if len(version.Version) > 0 {
  34. Cache.Set(keyName, v, time.Minute*20)
  35. }
  36. return version
  37. }
  38. func NewCasaService() CasaService {
  39. return &casaService{}
  40. }