chore(all): use casers instead of strings.Title
- Add `golang.org/x/text` dependency - Update code to use `cases.Title(language.English)`
This commit is contained in:
@@ -6,11 +6,12 @@ import (
|
||||
"strings"
|
||||
|
||||
"github.com/qdm12/gluetun/internal/constants"
|
||||
"golang.org/x/text/cases"
|
||||
)
|
||||
|
||||
var errCountryCodeUnknown = errors.New("country code is unknown")
|
||||
|
||||
func parseFilename(fileName, hostname string) (
|
||||
func parseFilename(fileName, hostname string, titleCaser cases.Caser) (
|
||||
country, city string, err error) {
|
||||
const prefix = "ipvanish-"
|
||||
s := strings.TrimPrefix(fileName, prefix)
|
||||
@@ -28,11 +29,11 @@ func parseFilename(fileName, hostname string) (
|
||||
if !ok {
|
||||
return "", "", fmt.Errorf("%w: %s", errCountryCodeUnknown, countryCode)
|
||||
}
|
||||
country = strings.Title(country)
|
||||
country = titleCaser.String(country)
|
||||
|
||||
if len(parts) > 1 {
|
||||
city = strings.Join(parts[1:], " ")
|
||||
city = strings.Title(city)
|
||||
city = titleCaser.String(city)
|
||||
}
|
||||
|
||||
return country, city, nil
|
||||
|
||||
@@ -6,6 +6,8 @@ import (
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/require"
|
||||
"golang.org/x/text/cases"
|
||||
"golang.org/x/text/language"
|
||||
)
|
||||
|
||||
func Test_parseFilename(t *testing.T) {
|
||||
@@ -39,7 +41,8 @@ func Test_parseFilename(t *testing.T) {
|
||||
t.Run(name, func(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
country, city, err := parseFilename(testCase.fileName, testCase.hostname)
|
||||
titleCaser := cases.Title(language.English)
|
||||
country, city, err := parseFilename(testCase.fileName, testCase.hostname, titleCaser)
|
||||
|
||||
if testCase.err != nil {
|
||||
require.Error(t, err)
|
||||
|
||||
@@ -12,6 +12,8 @@ import (
|
||||
"github.com/qdm12/gluetun/internal/updater/openvpn"
|
||||
"github.com/qdm12/gluetun/internal/updater/resolver"
|
||||
"github.com/qdm12/gluetun/internal/updater/unzip"
|
||||
"golang.org/x/text/cases"
|
||||
"golang.org/x/text/language"
|
||||
)
|
||||
|
||||
var ErrNotEnoughServers = errors.New("not enough servers found")
|
||||
@@ -30,6 +32,7 @@ func GetServers(ctx context.Context, unzipper unzip.Unzipper,
|
||||
|
||||
hts := make(hostToServer)
|
||||
|
||||
titleCaser := cases.Title(language.English)
|
||||
for fileName, content := range contents {
|
||||
if !strings.HasSuffix(fileName, ".ovpn") {
|
||||
continue // not an OpenVPN file
|
||||
@@ -54,7 +57,7 @@ func GetServers(ctx context.Context, unzipper unzip.Unzipper,
|
||||
continue
|
||||
}
|
||||
|
||||
country, city, err := parseFilename(fileName, hostname)
|
||||
country, city, err := parseFilename(fileName, hostname, titleCaser)
|
||||
if err != nil {
|
||||
// treat error as warning and go to next file
|
||||
warning := err.Error() + " in " + fileName
|
||||
|
||||
@@ -1,8 +1,12 @@
|
||||
package torguard
|
||||
|
||||
import "strings"
|
||||
import (
|
||||
"strings"
|
||||
|
||||
func parseFilename(fileName string) (country, city string) {
|
||||
"golang.org/x/text/cases"
|
||||
)
|
||||
|
||||
func parseFilename(fileName string, titleCaser cases.Caser) (country, city string) {
|
||||
const prefix = "TorGuard."
|
||||
const suffix = ".ovpn"
|
||||
s := strings.TrimPrefix(fileName, prefix)
|
||||
@@ -20,7 +24,7 @@ func parseFilename(fileName string) (country, city string) {
|
||||
s = strings.ReplaceAll(s, "-", " ")
|
||||
s = strings.ReplaceAll(s, ".", " ")
|
||||
s = strings.ToLower(s)
|
||||
s = strings.Title(s)
|
||||
s = titleCaser.String(s)
|
||||
city = s
|
||||
|
||||
default:
|
||||
|
||||
@@ -12,6 +12,8 @@ import (
|
||||
"github.com/qdm12/gluetun/internal/updater/openvpn"
|
||||
"github.com/qdm12/gluetun/internal/updater/resolver"
|
||||
"github.com/qdm12/gluetun/internal/updater/unzip"
|
||||
"golang.org/x/text/cases"
|
||||
"golang.org/x/text/language"
|
||||
)
|
||||
|
||||
var ErrNotEnoughServers = errors.New("not enough servers found")
|
||||
@@ -32,16 +34,17 @@ func GetServers(ctx context.Context, unzipper unzip.Unzipper,
|
||||
}
|
||||
|
||||
hts := make(hostToServer)
|
||||
titleCaser := cases.Title(language.English)
|
||||
|
||||
for fileName, content := range tcpContents {
|
||||
const tcp, udp = true, false
|
||||
newWarnings := addServerFromOvpn(fileName, content, hts, tcp, udp)
|
||||
newWarnings := addServerFromOvpn(fileName, content, hts, tcp, udp, titleCaser)
|
||||
warnings = append(warnings, newWarnings...)
|
||||
}
|
||||
|
||||
for fileName, content := range udpContents {
|
||||
const tcp, udp = false, true
|
||||
newWarnings := addServerFromOvpn(fileName, content, hts, tcp, udp)
|
||||
newWarnings := addServerFromOvpn(fileName, content, hts, tcp, udp, titleCaser)
|
||||
warnings = append(warnings, newWarnings...)
|
||||
}
|
||||
|
||||
@@ -72,12 +75,12 @@ func GetServers(ctx context.Context, unzipper unzip.Unzipper,
|
||||
}
|
||||
|
||||
func addServerFromOvpn(fileName string, content []byte,
|
||||
hts hostToServer, tcp, udp bool) (warnings []string) {
|
||||
hts hostToServer, tcp, udp bool, titleCaser cases.Caser) (warnings []string) {
|
||||
if !strings.HasSuffix(fileName, ".ovpn") {
|
||||
return nil // not an OpenVPN file
|
||||
}
|
||||
|
||||
country, city := parseFilename(fileName)
|
||||
country, city := parseFilename(fileName, titleCaser)
|
||||
|
||||
host, warning, err := openvpn.ExtractHost(content)
|
||||
if warning != "" {
|
||||
|
||||
@@ -4,13 +4,14 @@ package updater
|
||||
import (
|
||||
"context"
|
||||
"net/http"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/qdm12/gluetun/internal/configuration/settings"
|
||||
"github.com/qdm12/gluetun/internal/models"
|
||||
"github.com/qdm12/gluetun/internal/updater/resolver"
|
||||
"github.com/qdm12/gluetun/internal/updater/unzip"
|
||||
"golang.org/x/text/cases"
|
||||
"golang.org/x/text/language"
|
||||
)
|
||||
|
||||
type Updater interface {
|
||||
@@ -46,9 +47,11 @@ func New(settings settings.Updater, httpClient *http.Client,
|
||||
}
|
||||
}
|
||||
|
||||
var caser = cases.Title(language.English) //nolint:gochecknoglobals
|
||||
|
||||
func (u *updater) UpdateServers(ctx context.Context) (allServers models.AllServers, err error) {
|
||||
for _, provider := range u.options.Providers {
|
||||
u.logger.Info("updating " + strings.Title(provider) + " servers...")
|
||||
u.logger.Info("updating " + caser.String(provider) + " servers...")
|
||||
// TODO support servers offering only TCP or only UDP
|
||||
// for NordVPN and PureVPN
|
||||
warnings, err := u.updateProvider(ctx, provider)
|
||||
|
||||
Reference in New Issue
Block a user