From d430e7c268595ee3f484156deb67fabff315214b Mon Sep 17 00:00:00 2001 From: Davide De Rosa Date: Fri, 26 Apr 2019 13:51:08 +0200 Subject: [PATCH] Add VyprVPN provider --- .../vyprvpn.imageset/Contents.json | 22 ++++++++++++++++++ .../vyprvpn.imageset/vyprvpn@2x.png | Bin 0 -> 3955 bytes .../vyprvpn.imageset/vyprvpn@3x.png | Bin 0 -> 6758 bytes .../Scenes/AccountViewController.swift | 3 +++ Passepartout/Resources/Web/net/vyprvpn.json | 1 + .../Resources/de.lproj/Localizable.strings | 1 + .../Resources/en.lproj/Localizable.strings | 1 + .../Resources/it.lproj/Localizable.strings | 1 + .../Resources/pt-br.lproj/Localizable.strings | 1 + .../Resources/ru.lproj/Localizable.strings | 1 + .../Sources/Services/Infrastructure.swift | 2 ++ .../Services/InfrastructureFactory.swift | 1 + Passepartout/Sources/SwiftGen+Strings.swift | 16 ++++--------- 13 files changed, 38 insertions(+), 12 deletions(-) create mode 100644 Passepartout-iOS/Providers.xcassets/vyprvpn.imageset/Contents.json create mode 100644 Passepartout-iOS/Providers.xcassets/vyprvpn.imageset/vyprvpn@2x.png create mode 100644 Passepartout-iOS/Providers.xcassets/vyprvpn.imageset/vyprvpn@3x.png create mode 100644 Passepartout/Resources/Web/net/vyprvpn.json diff --git a/Passepartout-iOS/Providers.xcassets/vyprvpn.imageset/Contents.json b/Passepartout-iOS/Providers.xcassets/vyprvpn.imageset/Contents.json new file mode 100644 index 00000000..34292c4b --- /dev/null +++ b/Passepartout-iOS/Providers.xcassets/vyprvpn.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "filename" : "vyprvpn@2x.png", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "vyprvpn@3x.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/Passepartout-iOS/Providers.xcassets/vyprvpn.imageset/vyprvpn@2x.png b/Passepartout-iOS/Providers.xcassets/vyprvpn.imageset/vyprvpn@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..07db8402ca4c3e0974c55426264d695296b681cb GIT binary patch literal 3955 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 literal 0 HcmV?d00001 diff --git a/Passepartout-iOS/Providers.xcassets/vyprvpn.imageset/vyprvpn@3x.png b/Passepartout-iOS/Providers.xcassets/vyprvpn.imageset/vyprvpn@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..1ee302b25ac93b225c5558b40358ad55e4747336 GIT binary patch literal 6758 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 OpenVPN / IKEv2 Username\" auf der Webseite."; "account.sections.guidance.footer.infrastructure.tunnelbear" = "Benutze deine %@ Web-Zugangsdaten. Dein Benutzername ist üblicherweise deine Email."; +"account.sections.guidance.footer.infrastructure.vyprvpn" = "Benutze deine %@ Web-Zugangsdaten. Dein Benutzername ist üblicherweise deine Email."; "account.sections.guidance.footer.infrastructure.windscribe" = "Deine Zugangsdaten für %@ findest du im OpenVPN Config Generator auf der Webseite."; "account.sections.registration.footer" = "Beantrage einen Account auf der %@ Webseite."; "account.cells.username.caption" = "Benutzername"; diff --git a/Passepartout/Resources/en.lproj/Localizable.strings b/Passepartout/Resources/en.lproj/Localizable.strings index 2c08d0f9..cd38b50f 100644 --- a/Passepartout/Resources/en.lproj/Localizable.strings +++ b/Passepartout/Resources/en.lproj/Localizable.strings @@ -142,6 +142,7 @@ "account.sections.guidance.footer.infrastructure.pia" = "Use your %@ website credentials. Your username is usually numeric with a \"p\" prefix."; "account.sections.guidance.footer.infrastructure.protonvpn" = "Find your %@ credentials in the \"Account > OpenVPN / IKEv2 Username\" section of the website."; "account.sections.guidance.footer.infrastructure.tunnelbear" = "Use your %@ website credentials. Your username is usually your e-mail."; +"account.sections.guidance.footer.infrastructure.vyprvpn" = "Use your %@ website credentials. Your username is usually your e-mail."; "account.sections.guidance.footer.infrastructure.windscribe" = "Find your %@ credentials in the OpenVPN Config Generator on the website."; "account.sections.registration.footer" = "Go get an account on the %@ website."; "account.cells.username.caption" = "Username"; diff --git a/Passepartout/Resources/it.lproj/Localizable.strings b/Passepartout/Resources/it.lproj/Localizable.strings index 36bc773b..1e446075 100644 --- a/Passepartout/Resources/it.lproj/Localizable.strings +++ b/Passepartout/Resources/it.lproj/Localizable.strings @@ -142,6 +142,7 @@ "account.sections.guidance.footer.infrastructure.pia" = "Usa le credenziali del sito di %@. Il tuo username è generalmente numerico con un prefisso \"p\"."; "account.sections.guidance.footer.infrastructure.protonvpn" = "Trova le tue credenziali nella sezione \"Account > OpenVPN / IKEv2 Username\" del sito di %@."; "account.sections.guidance.footer.infrastructure.tunnelbear" = "Usa le credenziali del sito di %@. Il tuo username è generalmente la tua e-mail."; +"account.sections.guidance.footer.infrastructure.vyprvpn" = "Usa le credenziali del sito di %@. Il tuo username è generalmente la tua e-mail."; "account.sections.guidance.footer.infrastructure.windscribe" = "Trova le tue credenziali nell'OpenVPN Config Generator sul sito di %@."; "account.sections.registration.footer" = "Registra un account sul sito di %@."; "account.cells.username.caption" = "Username"; diff --git a/Passepartout/Resources/pt-br.lproj/Localizable.strings b/Passepartout/Resources/pt-br.lproj/Localizable.strings index 298b0752..39f969fe 100644 --- a/Passepartout/Resources/pt-br.lproj/Localizable.strings +++ b/Passepartout/Resources/pt-br.lproj/Localizable.strings @@ -146,6 +146,7 @@ "account.sections.guidance.footer.infrastructure.pia" = "Utilize %@ credenciais do site. Seu usuário é normalmente numérico com prefixo \"p\"."; "account.sections.guidance.footer.infrastructure.protonvpn" = "Encontre %@ credenciais na sessão \"Account > OpenVPN / IKEv2 Username\" do site."; "account.sections.guidance.footer.infrastructure.tunnelbear" = "Utilize %@ credenciais do site. Seu usuário é normalmente o seu email."; +"account.sections.guidance.footer.infrastructure.vyprvpn" = "Utilize %@ credenciais do site. Seu usuário é normalmente o seu email."; "account.sections.guidance.footer.infrastructure.windscribe" = "Encontre %@ credenciais no gerador de configuração OpenVPN do site."; "account.sections.registration.footer" = "Registrar em %@ website."; "account.cells.username.caption" = "Usuário"; diff --git a/Passepartout/Resources/ru.lproj/Localizable.strings b/Passepartout/Resources/ru.lproj/Localizable.strings index a4f090b1..aba68f9e 100644 --- a/Passepartout/Resources/ru.lproj/Localizable.strings +++ b/Passepartout/Resources/ru.lproj/Localizable.strings @@ -142,6 +142,7 @@ "account.sections.guidance.footer.infrastructure.pia" = "Используйте Ваши данные для входа с веб-сайта %@. Ваш логин обычно числовой с приставкой \"p\"."; "account.sections.guidance.footer.infrastructure.protonvpn" = "Найдите Ваши данные для входа %@ \"Account > OpenVPN / IKEv2 Username\" секции веб-сайта."; "account.sections.guidance.footer.infrastructure.tunnelbear" = "Используйте данные для входа на %@ веб-сайт. Ваш логин обычно Ваш e-mail."; +"account.sections.guidance.footer.infrastructure.vyprvpn" = "Используйте данные для входа на %@ веб-сайт. Ваш логин обычно Ваш e-mail."; "account.sections.guidance.footer.infrastructure.windscribe" = "Найдите Ваши данные для входа %@ в OpenVPN Config Generator на веб-сайте."; "account.sections.registration.footer" = "Создайте аккаунт на %@ веб-сайте."; "account.cells.username.caption" = "Логин"; diff --git a/Passepartout/Sources/Services/Infrastructure.swift b/Passepartout/Sources/Services/Infrastructure.swift index c268ff13..c9122b96 100644 --- a/Passepartout/Sources/Services/Infrastructure.swift +++ b/Passepartout/Sources/Services/Infrastructure.swift @@ -38,6 +38,8 @@ public struct Infrastructure: Codable { case tunnelBear = "TunnelBear" + case vyprVPN = "VyprVPN" + case windscribe = "Windscribe" } diff --git a/Passepartout/Sources/Services/InfrastructureFactory.swift b/Passepartout/Sources/Services/InfrastructureFactory.swift index 57c1b61c..54aee817 100644 --- a/Passepartout/Sources/Services/InfrastructureFactory.swift +++ b/Passepartout/Sources/Services/InfrastructureFactory.swift @@ -64,6 +64,7 @@ public class InfrastructureFactory { .pia, .protonVPN, .tunnelBear, + .vyprVPN, .windscribe ] diff --git a/Passepartout/Sources/SwiftGen+Strings.swift b/Passepartout/Sources/SwiftGen+Strings.swift index 49fb2e55..eb35575e 100644 --- a/Passepartout/Sources/SwiftGen+Strings.swift +++ b/Passepartout/Sources/SwiftGen+Strings.swift @@ -106,6 +106,10 @@ public enum L10n { public static func tunnelbear(_ p1: String) -> String { return L10n.tr("Localizable", "account.sections.guidance.footer.infrastructure.tunnelbear", p1) } + /// Use your %@ website credentials. Your username is usually your e-mail. + public static func vyprvpn(_ p1: String) -> String { + return L10n.tr("Localizable", "account.sections.guidance.footer.infrastructure.vyprvpn", p1) + } /// Find your %@ credentials in the OpenVPN Config Generator on the website. public static func windscribe(_ p1: String) -> String { return L10n.tr("Localizable", "account.sections.guidance.footer.infrastructure.windscribe", p1) @@ -554,18 +558,6 @@ public enum L10n { } public enum Provider { - public enum Pool { - public enum Sections { - public enum Free { - /// Free - public static let header = L10n.tr("Localizable", "provider.pool.sections.free.header") - } - public enum Paid { - /// Paid - public static let header = L10n.tr("Localizable", "provider.pool.sections.paid.header") - } - } - } public enum Preset { public enum Cells { public enum TechDetails {