mirror of
https://github.com/AynaLivePlayer/AynaLivePlayer.git
synced 2025-12-06 18:32:50 +08:00
65 lines
1.8 KiB
Go
65 lines
1.8 KiB
Go
package updater
|
|
|
|
import (
|
|
"AynaLivePlayer/core/events"
|
|
"AynaLivePlayer/core/model"
|
|
"AynaLivePlayer/global"
|
|
"AynaLivePlayer/pkg/config"
|
|
"AynaLivePlayer/pkg/eventbus"
|
|
"AynaLivePlayer/pkg/logger"
|
|
"github.com/go-resty/resty/v2"
|
|
"github.com/tidwall/gjson"
|
|
"strconv"
|
|
)
|
|
|
|
var log logger.ILogger = nil
|
|
|
|
func Initialize() {
|
|
log = global.Logger.WithPrefix("internal.updater")
|
|
if config.General.AutoCheckUpdate {
|
|
go func() {
|
|
info, hasUpdate := CheckUpdate()
|
|
if !hasUpdate {
|
|
return
|
|
}
|
|
_ = global.EventBus.Publish(
|
|
events.CheckUpdateResultUpdate,
|
|
events.CheckUpdateResultUpdateEvent{
|
|
HasUpdate: hasUpdate,
|
|
Info: info,
|
|
})
|
|
}()
|
|
}
|
|
global.EventBus.Subscribe("",
|
|
events.CheckUpdateCmd, "internal.updater.handle",
|
|
func(evt *eventbus.Event) {
|
|
info, hasUpdate := CheckUpdate()
|
|
_ = global.EventBus.Publish(
|
|
events.CheckUpdateResultUpdate,
|
|
events.CheckUpdateResultUpdateEvent{
|
|
HasUpdate: hasUpdate,
|
|
Info: info,
|
|
})
|
|
})
|
|
}
|
|
|
|
func CheckUpdate() (model.VersionInfo, bool) {
|
|
uri := config.General.InfoApiServer + "/api/version/check_update"
|
|
resp, err := resty.New().R().SetQueryParam("client_version", strconv.Itoa(int(config.Version))).Get(uri)
|
|
if err != nil {
|
|
log.Errorf("failed to check update: %s", err.Error())
|
|
return model.VersionInfo{}, false
|
|
}
|
|
result := gjson.ParseBytes(resp.Body())
|
|
log.Infof("check update result: %s", result.String())
|
|
if !result.Get("data.has_update").Bool() {
|
|
log.Infof("no update available")
|
|
return model.VersionInfo{}, false
|
|
}
|
|
log.Infof("new version available: %s", model.Version(result.Get("data.latest.version").Uint()).String())
|
|
return model.VersionInfo{
|
|
Version: model.Version(result.Get("data.latest.version").Uint()),
|
|
Info: result.Get("data.latest.note").String(),
|
|
}, true
|
|
}
|