104 lines
3.7 KiB
Go
104 lines
3.7 KiB
Go
package backend
|
|
|
|
import (
|
|
"encoding/json"
|
|
"net/http"
|
|
"strings"
|
|
|
|
"music-server/internal/logging"
|
|
"go.uber.org/zap"
|
|
)
|
|
|
|
type giteaResponse struct {
|
|
Id int `json:"id"`
|
|
Name string `json:"name"`
|
|
Assets []assetResponse `json:"assets"`
|
|
}
|
|
|
|
type assetResponse struct {
|
|
Id int `json:"id"`
|
|
Name string `json:"name"`
|
|
DownloadUrl string `json:"browser_download_url"`
|
|
}
|
|
|
|
func CheckLatest() string {
|
|
resp, err := http.Get("https://gitea.sanplex.xyz/api/v1/repos/sansan/MusicPlayer/releases/latest")
|
|
if err != nil {
|
|
logging.GetLogger().Fatal("Failed to check latest version", zap.String("error", err.Error()))
|
|
}
|
|
defer resp.Body.Close()
|
|
//Create a variable of the same type as our model
|
|
var cResp giteaResponse
|
|
//Decode the data
|
|
if err := json.NewDecoder(resp.Body).Decode(&cResp); err != nil {
|
|
logging.GetLogger().Fatal("Failed to decode response", zap.String("error", err.Error()))
|
|
}
|
|
logging.GetLogger().Debug("Checked latest version", zap.Int("id", cResp.Id), zap.String("name", cResp.Name))
|
|
return cResp.Name
|
|
}
|
|
|
|
func ListAssetsOfLatest() []string {
|
|
resp, err := http.Get("https://gitea.sanplex.xyz/api/v1/repos/sansan/MusicPlayer/releases/latest")
|
|
if err != nil {
|
|
logging.GetLogger().Fatal("Failed to list assets", zap.String("error", err.Error()))
|
|
}
|
|
defer resp.Body.Close()
|
|
//Create a variable of the same type as our model
|
|
var cResp giteaResponse
|
|
//Decode the data
|
|
if err := json.NewDecoder(resp.Body).Decode(&cResp); err != nil {
|
|
logging.GetLogger().Fatal("Failed to decode response", zap.String("error", err.Error()))
|
|
}
|
|
logging.GetLogger().Debug("Listing assets", zap.Int("id", cResp.Id), zap.String("name", cResp.Name))
|
|
var assets []string
|
|
for _, asset := range cResp.Assets {
|
|
logging.GetLogger().Debug("Found asset", zap.Int("id", cResp.Id), zap.String("name", cResp.Name), zap.String("asset", asset.Name))
|
|
assets = append(assets, asset.Name)
|
|
}
|
|
return assets
|
|
}
|
|
|
|
func DownloadLatestWindows() string {
|
|
resp, err := http.Get("https://gitea.sanplex.xyz/api/v1/repos/sansan/MusicPlayer/releases/latest")
|
|
if err != nil {
|
|
logging.GetLogger().Fatal("Failed to download latest Windows version", zap.String("error", err.Error()))
|
|
}
|
|
defer resp.Body.Close()
|
|
//Create a variable of the same type as our model
|
|
var cResp giteaResponse
|
|
//Decode the data
|
|
if err := json.NewDecoder(resp.Body).Decode(&cResp); err != nil {
|
|
logging.GetLogger().Fatal("Failed to decode response", zap.String("error", err.Error()))
|
|
}
|
|
logging.GetLogger().Debug("Downloading Windows version", zap.Int("id", cResp.Id), zap.String("name", cResp.Name))
|
|
for _, asset := range cResp.Assets {
|
|
logging.GetLogger().Debug("Checking asset", zap.Int("id", cResp.Id), zap.String("name", cResp.Name), zap.String("asset", asset.Name))
|
|
if strings.HasSuffix(asset.Name, ".exe") {
|
|
return asset.DownloadUrl
|
|
}
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func DownloadLatestLinux() string {
|
|
resp, err := http.Get("https://gitea.sanplex.xyz/api/v1/repos/sansan/MusicPlayer/releases/latest")
|
|
if err != nil {
|
|
logging.GetLogger().Fatal("Failed to download latest Linux version", zap.String("error", err.Error()))
|
|
}
|
|
defer resp.Body.Close()
|
|
//Create a variable of the same type as our model
|
|
var cResp giteaResponse
|
|
//Decode the data
|
|
if err := json.NewDecoder(resp.Body).Decode(&cResp); err != nil {
|
|
logging.GetLogger().Fatal("Failed to decode response", zap.String("error", err.Error()))
|
|
}
|
|
logging.GetLogger().Debug("Downloading Linux version", zap.Int("id", cResp.Id), zap.String("name", cResp.Name))
|
|
for _, asset := range cResp.Assets {
|
|
logging.GetLogger().Debug("Checking asset", zap.Int("id", cResp.Id), zap.String("name", cResp.Name), zap.String("asset", asset.Name))
|
|
if strings.HasSuffix(asset.Name, ".x86_64") {
|
|
return asset.DownloadUrl
|
|
}
|
|
}
|
|
return ""
|
|
}
|