46 lines
815 B
Go
46 lines
815 B
Go
package updater
|
|
|
|
import (
|
|
"io"
|
|
"log"
|
|
"net/http"
|
|
|
|
"github.com/goccy/go-json"
|
|
)
|
|
|
|
const (
|
|
gitHubAPILatest = "https://api.github.com/repos/yt-dlp/yt-dlp/releases/latest"
|
|
gitHubAPIDownload = "https://api.github.com/repos/yt-dlp/yt-dlp/releases/download"
|
|
)
|
|
|
|
var (
|
|
client = &http.Client{
|
|
CheckRedirect: http.DefaultClient.CheckRedirect,
|
|
}
|
|
)
|
|
|
|
func getLatestReleaseTag() (string, error) {
|
|
res, err := client.Get(gitHubAPILatest)
|
|
if err != nil {
|
|
log.Println("Cannot get release tag from GitHub API")
|
|
return "", err
|
|
}
|
|
defer res.Body.Close()
|
|
|
|
body, err := io.ReadAll(res.Body)
|
|
|
|
if err != nil {
|
|
log.Println("Cannot parse response from GitHub API")
|
|
return "", err
|
|
}
|
|
|
|
tag := ReleaseLatestResponse{}
|
|
json.Unmarshal(body, &tag)
|
|
|
|
return tag.TagName, nil
|
|
}
|
|
|
|
func ForceUpdate() {
|
|
getLatestReleaseTag()
|
|
}
|