chore(storage): only pass hardcoded versions to read file

This commit is contained in:
Quentin McGaw
2022-05-28 22:36:16 +00:00
parent 22455ac76f
commit 90dd3b1b5c
4 changed files with 76 additions and 55 deletions

View File

@@ -16,7 +16,7 @@ import (
// readFromFile reads the servers from server.json.
// It only reads servers that have the same version as the hardcoded servers version
// to avoid JSON unmarshaling errors.
func (s *Storage) readFromFile(filepath string, hardcoded models.AllServers) (
func (s *Storage) readFromFile(filepath string, hardcodedVersions map[string]uint16) (
servers models.AllServers, err error) {
file, err := os.Open(filepath)
if os.IsNotExist(err) {
@@ -34,10 +34,10 @@ func (s *Storage) readFromFile(filepath string, hardcoded models.AllServers) (
return servers, err
}
return s.extractServersFromBytes(b, hardcoded)
return s.extractServersFromBytes(b, hardcodedVersions)
}
func (s *Storage) extractServersFromBytes(b []byte, hardcoded models.AllServers) (
func (s *Storage) extractServersFromBytes(b []byte, hardcodedVersions map[string]uint16) (
servers models.AllServers, err error) {
rawMessages := make(map[string]json.RawMessage)
if err := json.Unmarshal(b, &rawMessages); err != nil {
@@ -50,7 +50,7 @@ func (s *Storage) extractServersFromBytes(b []byte, hardcoded models.AllServers)
servers.ProviderToServers = make(map[string]models.Servers, len(allProviders))
titleCaser := cases.Title(language.English)
for _, provider := range allProviders {
hardcoded, ok := hardcoded.ProviderToServers[provider]
hardcodedVersion, ok := hardcodedVersions[provider]
if !ok {
panic(fmt.Sprintf("provider %s not found in hardcoded servers map", provider))
}
@@ -64,7 +64,7 @@ func (s *Storage) extractServersFromBytes(b []byte, hardcoded models.AllServers)
continue
}
mergedServers, versionsMatch, err := s.readServers(provider, hardcoded, rawMessage, titleCaser)
mergedServers, versionsMatch, err := s.readServers(provider, hardcodedVersion, rawMessage, titleCaser)
if err != nil {
return models.AllServers{}, err
} else if !versionsMatch {
@@ -82,7 +82,7 @@ var (
errDecodeProvider = errors.New("cannot decode servers for provider")
)
func (s *Storage) readServers(provider string, hardcoded models.Servers,
func (s *Storage) readServers(provider string, hardcodedVersion uint16,
rawMessage json.RawMessage, titleCaser cases.Caser) (servers models.Servers,
versionsMatch bool, err error) {
provider = titleCaser.String(provider)
@@ -93,9 +93,9 @@ func (s *Storage) readServers(provider string, hardcoded models.Servers,
return servers, false, fmt.Errorf("%w: %s: %s", errDecodeProvider, provider, err)
}
versionsMatch = hardcoded.Version == persistedServers.Version
versionsMatch = hardcodedVersion == persistedServers.Version
if !versionsMatch {
s.logVersionDiff(provider, hardcoded.Version, persistedServers.Version)
s.logVersionDiff(provider, hardcodedVersion, persistedServers.Version)
return servers, versionsMatch, nil
}