gluetun updater only downloads files from gluetun-servers

This commit is contained in:
Quentin McGaw
2026-05-11 03:34:54 +00:00
parent d9cc7dcffb
commit 4d2ec68e66
8 changed files with 125 additions and 130 deletions
+15 -17
View File
@@ -3,31 +3,29 @@ package updater
import (
"context"
"encoding/json"
"errors"
"fmt"
"github.com/qdm12/gluetun-servers/pkg/models"
"github.com/qdm12/gluetun-servers/pkg/updaters/common"
)
type Provider interface {
Name() string
FetchServers(ctx context.Context, minServers int) (servers []models.Server, err error)
}
func (u *Updater) updateProvider(ctx context.Context, provider Provider,
minRatio float64,
func (u *Updater) updateProvider(ctx context.Context, providerName string,
manifest manifest, minRatio float64,
) (err error) {
providerName := provider.Name()
providerFilepath := manifest.providerToFilepath[providerName]
providerFileURL := buildProviderFileURL(providerName, providerFilepath)
var data models.Servers
err = u.fetchJSON(ctx, providerFileURL, &data)
if err != nil {
return fmt.Errorf("downloading provider file %s: %w", providerFileURL, err)
}
existingServersCount := u.storage.GetServersCount(providerName)
minServers := int(minRatio * float64(existingServersCount))
servers, err := provider.FetchServers(ctx, minServers)
if err != nil {
if errors.Is(err, common.ErrNotEnoughServers) {
u.logger.Warn("note: if running the update manually, you can use the flag " +
"-minratio to allow the update to succeed with less servers found")
}
return fmt.Errorf("getting %s servers: %w", providerName, err)
servers := data.Servers
if len(servers) < minServers {
return fmt.Errorf("provider %s has not enough servers from downloaded file: got %d and expected at least %d",
providerName, len(servers), minServers)
}
for _, server := range servers {