2020-08-25 19:38:50 -04:00
|
|
|
package constants
|
|
|
|
|
|
2021-07-20 03:01:26 +00:00
|
|
|
import (
|
2021-07-20 19:01:49 +00:00
|
|
|
"embed"
|
2021-07-20 03:01:26 +00:00
|
|
|
"encoding/json"
|
2021-07-20 19:01:49 +00:00
|
|
|
"sync"
|
2021-07-20 03:01:26 +00:00
|
|
|
|
|
|
|
|
"github.com/qdm12/gluetun/internal/models"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
//go:embed servers.json
|
2021-07-20 19:01:49 +00:00
|
|
|
var allServersEmbedFS embed.FS //nolint:gochecknoglobals
|
2021-07-20 03:01:26 +00:00
|
|
|
var allServers models.AllServers //nolint:gochecknoglobals
|
2021-07-20 19:01:49 +00:00
|
|
|
var parseOnce sync.Once //nolint:gochecknoglobals
|
2021-07-20 03:01:26 +00:00
|
|
|
|
|
|
|
|
func init() { //nolint:gochecknoinits
|
|
|
|
|
// error returned covered by unit test
|
2021-07-20 19:01:49 +00:00
|
|
|
parseOnce.Do(func() { allServers, _ = parseAllServers() })
|
2021-07-20 03:01:26 +00:00
|
|
|
}
|
|
|
|
|
|
2021-07-20 19:01:49 +00:00
|
|
|
func parseAllServers() (allServers models.AllServers, err error) {
|
|
|
|
|
f, err := allServersEmbedFS.Open("servers.json")
|
|
|
|
|
if err != nil {
|
|
|
|
|
return allServers, err
|
|
|
|
|
}
|
|
|
|
|
decoder := json.NewDecoder(f)
|
|
|
|
|
err = decoder.Decode(&allServers)
|
2021-07-20 03:01:26 +00:00
|
|
|
return allServers, err
|
|
|
|
|
}
|
2020-08-25 19:38:50 -04:00
|
|
|
|
2021-07-20 19:01:49 +00:00
|
|
|
func GetAllServers() models.AllServers {
|
|
|
|
|
parseOnce.Do(func() { allServers, _ = parseAllServers() }) // init did not execute, used in tests
|
2021-07-20 03:01:26 +00:00
|
|
|
return allServers
|
2020-08-25 19:38:50 -04:00
|
|
|
}
|