consensus/cmd/api/versions.go
DataHoarder d577856081
All checks were successful
continuous-integration/drone/push Build is passing
Faster JSON encoder/decoder
2023-05-27 14:43:22 +02:00

72 lines
2.1 KiB
Go

package main
import (
cmdutils "git.gammaspectra.live/P2Pool/p2pool-observer/cmd/utils"
"git.gammaspectra.live/P2Pool/p2pool-observer/utils"
"io"
"net/http"
"sync"
"time"
)
var moneroVersion, p2poolVersion cmdutils.VersionInfo
var moneroVersionLock, p2poolVersionLock sync.Mutex
const versionCheckInterval = 3600
func getMoneroVersion() cmdutils.VersionInfo {
moneroVersionLock.Lock()
defer moneroVersionLock.Unlock()
now := time.Now().Unix()
if (moneroVersion.CheckedTimestamp + versionCheckInterval) >= now {
return moneroVersion
}
response, err := http.DefaultClient.Get("https://api.github.com/repos/monero-project/monero/releases/latest")
if err != nil {
return moneroVersion
}
defer response.Body.Close()
var releaseData cmdutils.ReleaseDataJson
if data, err := io.ReadAll(response.Body); err != nil {
return moneroVersion
} else if err = utils.UnmarshalJSON(data, &releaseData); err != nil {
return moneroVersion
} else {
moneroVersion.Version = releaseData.TagName
moneroVersion.Timestamp = releaseData.PublishedAt.Unix()
moneroVersion.Link = "https://github.com/monero-project/monero/releases/tag/" + releaseData.TagName
moneroVersion.CheckedTimestamp = now
}
return moneroVersion
}
func getP2PoolVersion() cmdutils.VersionInfo {
p2poolVersionLock.Lock()
defer p2poolVersionLock.Unlock()
now := time.Now().Unix()
if (p2poolVersion.CheckedTimestamp + versionCheckInterval) >= now {
return p2poolVersion
}
response, err := http.DefaultClient.Get("https://api.github.com/repos/SChernykh/p2pool/releases/latest")
if err != nil {
return p2poolVersion
}
defer response.Body.Close()
var releaseData cmdutils.ReleaseDataJson
if data, err := io.ReadAll(response.Body); err != nil {
return p2poolVersion
} else if err = utils.UnmarshalJSON(data, &releaseData); err != nil {
return p2poolVersion
} else {
p2poolVersion.Version = releaseData.TagName
p2poolVersion.Timestamp = releaseData.PublishedAt.Unix()
p2poolVersion.Link = "https://github.com/SChernykh/p2pool/releases/tag/" + releaseData.TagName
p2poolVersion.CheckedTimestamp = now
}
return p2poolVersion
}