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) { 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", "GET",
fmt.Sprintf("https://api.github.com/repos/%s/releases/latest", request.Repository), fmt.Sprintf("https://api.github.com/repos/%s/releases/latest", request.Repository),
nil, nil,
) )
}
if err != nil { if err != nil {
return nil, err return nil, err
@ -32,11 +44,20 @@ func fetchLatestGithubRelease(request *ReleaseRequest) (*AppRelease, error) {
httpRequest.Header.Add("Authorization", "Bearer "+(*request.Token)) 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 { if err != nil {
return nil, err return nil, err
} }
response = releases[0]
} else {
response, err = decodeJsonFromRequest[githubReleaseLatestResponseJson](defaultClient, httpRequest)
if err != nil {
return nil, err
}
}
return &AppRelease{ return &AppRelease{
Source: ReleaseSourceGithub, Source: ReleaseSourceGithub,

View File

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

View File

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

View File

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