common/update/api.go (57 lines of code) (raw):

package update import ( "encoding/json" "errors" "github.com/tidwall/gjson" "github.com/aliyun/aliyun_assist_client/agent/log" "github.com/aliyun/aliyun_assist_client/agent/util" "github.com/aliyun/aliyun_assist_client/agent/util/osutil" "github.com/aliyun/aliyun_assist_client/agent/version" ) type UpdateCheckResp struct { Flag int64 `json:"flag"` InstanceID string `json:"instanceId"` NeedUpdate int64 `json:"need_update"` NextInterval int64 `json:"next_interval"` UpdateInfo struct { FileName string `json:"file_name"` Md5 string `json:"md5"` URL string `json:"url"` } `json:"update_info"` } type UpdateCheckReport struct { Os string `json:"os"` Arch string `json:"arch"` OsVersion string `json:"os_version"` AppID string `json:"app_id"` AppVersion string `json:"app_version"` KernelVersion string `json:"kernel_version"` Distribution string `json:"distribution"` } func FetchUpdateInfo() (*UpdateCheckResp, error) { report := &UpdateCheckReport{ Os: osutil.GetOsType(), AppVersion: version.AssistVersion, AppID: "aliyun assistant", OsVersion: osutil.GetVersion(), Arch: osutil.GetOsArch(), KernelVersion: osutil.GetKernelVersion(), Distribution: osutil.GetDistribution(), } jsonBytes, _ := json.Marshal(*report) log.GetLogger().Info("UpdateCheck request: ", string(jsonBytes)) host := util.GetUpdateService() responseData, err := util.HttpPost(host, string(jsonBytes), "") if err != nil { return nil, err } if !gjson.Valid(responseData) { return nil, errors.New("invalid json") } log.GetLogger().Info("UpdateCheck response: ", responseData) var resp UpdateCheckResp if err := json.Unmarshal([]byte(responseData), &resp); err != nil { return nil, err } return &resp, nil }