mirror of
https://github.com/qdm12/gluetun.git
synced 2026-07-22 10:26:26 +02:00
gluetun updater only downloads files from gluetun-servers
This commit is contained in:
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user