add option to include github prereleases

This commit is contained in:
Mystically 2025-01-09 21:19:13 +01:00
parent 85b8ee493e
commit ed477e8cc6
4 changed files with 47 additions and 23 deletions

View File

@ -18,11 +18,23 @@ type githubReleaseLatestResponseJson struct {
}
func fetchLatestGithubRelease(request *ReleaseRequest) (*AppRelease, error) {
httpRequest, err := http.NewRequest(
var httpRequest *http.Request
var err error
var response githubReleaseLatestResponseJson
if request.IncludeGithubPreReleases {
httpRequest, err = http.NewRequest(
"GET",
fmt.Sprintf("https://api.github.com/repos/%s/releases", request.Repository),
nil,
)
} else {
httpRequest, err = http.NewRequest(
"GET",
fmt.Sprintf("https://api.github.com/repos/%s/releases/latest", request.Repository),
nil,
)
}
if err != nil {
return nil, err
@ -32,11 +44,20 @@ func fetchLatestGithubRelease(request *ReleaseRequest) (*AppRelease, error) {
httpRequest.Header.Add("Authorization", "Bearer "+(*request.Token))
}
response, err := decodeJsonFromRequest[githubReleaseLatestResponseJson](defaultClient, httpRequest)
if request.IncludeGithubPreReleases {
releases, err := decodeJsonFromRequest[[]githubReleaseLatestResponseJson](defaultClient, httpRequest)
if err != nil {
return nil, err
}
response = releases[0]
} else {
response, err = decodeJsonFromRequest[githubReleaseLatestResponseJson](defaultClient, httpRequest)
if err != nil {
return nil, err
}
}
return &AppRelease{
Source: ReleaseSourceGithub,

View File

@ -19,6 +19,7 @@ type ReleaseRequest struct {
Source ReleaseSource
Repository string
Token *string
IncludeGithubPreReleases bool
}
func FetchLatestReleases(requests []*ReleaseRequest) (AppReleases, error) {

View File

@ -49,7 +49,7 @@ func NewConfigFromYml(contents io.Reader) (*Config, error) {
func NewConfig() *Config {
config := &Config{}
config.Server.Host = ""
config.Server.Host = "127.0.0.1"
config.Server.Port = 8080
return config

View File

@ -21,6 +21,7 @@ type Releases struct {
Limit int `yaml:"limit"`
CollapseAfter int `yaml:"collapse-after"`
ShowSourceIcon bool `yaml:"show-source-icon"`
IncludeGithubPreReleases bool `yaml:"include-github-prereleases"`
}
func (widget *Releases) Initialize() error {
@ -44,6 +45,7 @@ func (widget *Releases) Initialize() error {
request = &feed.ReleaseRequest{
Source: feed.ReleaseSourceGithub,
Repository: repository,
IncludeGithubPreReleases: widget.IncludeGithubPreReleases,
}
if widget.Token != "" {