Files
go-unifi/fields/version.go
Joshua Spence 206f4be940 Make golangci-lint more strict (#150)
* Reformat some YAML files

* Make `golangci-lint` more strict
2023-06-23 09:00:12 +10:00

51 lines
1.1 KiB
Go

package main
import (
"context"
"encoding/json"
"net/http"
"net/url"
"github.com/hashicorp/go-version"
)
func latestUnifiVersion() (*version.Version, *url.URL, error) {
url, err := url.Parse(firmwareUpdateApi)
if err != nil {
return nil, nil, err
}
query := url.Query()
query.Add("filter", firmwareUpdateApiFilter("channel", releaseChannel))
query.Add("filter", firmwareUpdateApiFilter("product", unifiControllerProduct))
url.RawQuery = query.Encode()
req, err := http.NewRequestWithContext(context.Background(), http.MethodGet, url.String(), nil)
if err != nil {
return nil, nil, err
}
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
return nil, nil, err
}
defer resp.Body.Close()
var respData firmwareUpdateApiResponse
err = json.NewDecoder(resp.Body).Decode(&respData)
if err != nil {
return nil, nil, err
}
for _, firmware := range respData.Embedded.Firmware {
if firmware.Platform != debianPlatform {
continue
}
return firmware.Version.Core(), firmware.Links.Data.Href, nil
}
return nil, nil, nil
}