From 30385c24702cdea9a98a9108535ae516126479e5 Mon Sep 17 00:00:00 2001 From: NaiJi Date: Tue, 2 May 2023 23:42:18 -0300 Subject: [PATCH] refactor: Create empty DnsProvider interfaces --- .../api_maps/rest_maps/api_controller.dart | 2 +- .../rest_maps/api_factory_creator.dart | 2 +- lib/logic/api_maps/staging_options.dart | 2 +- .../server_installation_cubit.dart | 2 +- .../server_installation_repository.dart | 2 +- .../providers/dns_providers/cloudflare.dart | 3 +++ .../dns_providers/digital_ocean.dart | 3 +++ .../providers/dns_providers/dns_provider.dart | 1 + .../dns_providers/dns_provider_factory.dart | 25 +++++++++++++++++++ lib/logic/providers/provider_settings.dart | 4 +-- lib/logic/providers/providers_controller.dart | 20 ++++++++++++--- .../server_providers/digital_ocean.dart | 2 +- .../providers/server_providers/hetzner.dart | 2 +- .../server_provider.dart | 0 .../server_provider_factory.dart | 2 +- 15 files changed, 59 insertions(+), 13 deletions(-) create mode 100644 lib/logic/providers/dns_providers/cloudflare.dart create mode 100644 lib/logic/providers/dns_providers/digital_ocean.dart create mode 100644 lib/logic/providers/dns_providers/dns_provider.dart create mode 100644 lib/logic/providers/dns_providers/dns_provider_factory.dart rename lib/logic/providers/{ => server_providers}/server_provider.dart (100%) diff --git a/lib/logic/api_maps/rest_maps/api_controller.dart b/lib/logic/api_maps/rest_maps/api_controller.dart index 8e58ee6f..9cee1fe9 100644 --- a/lib/logic/api_maps/rest_maps/api_controller.dart +++ b/lib/logic/api_maps/rest_maps/api_controller.dart @@ -7,7 +7,7 @@ class ApiController { _dnsProviderApiFactory; static void initDnsProviderApiFactory( - final DnsProviderFactorySettings settings, + final DnsProviderSettings settings, ) { _dnsProviderApiFactory = ApiFactoryCreator.createDnsProviderApiFactory(settings); diff --git a/lib/logic/api_maps/rest_maps/api_factory_creator.dart b/lib/logic/api_maps/rest_maps/api_factory_creator.dart index 97bb3acd..69cfa766 100644 --- a/lib/logic/api_maps/rest_maps/api_factory_creator.dart +++ b/lib/logic/api_maps/rest_maps/api_factory_creator.dart @@ -28,7 +28,7 @@ class ApiFactoryCreator { } static DnsProviderApiFactory createDnsProviderApiFactory( - final DnsProviderFactorySettings settings, + final DnsProviderSettings settings, ) { switch (settings.provider) { case DnsProviderType.cloudflare: diff --git a/lib/logic/api_maps/staging_options.dart b/lib/logic/api_maps/staging_options.dart index 7d3084b7..26b07e53 100644 --- a/lib/logic/api_maps/staging_options.dart +++ b/lib/logic/api_maps/staging_options.dart @@ -4,5 +4,5 @@ class StagingOptions { /// Whether we request for staging temprorary certificates. /// Hardcode to 'true' in the middle of testing to not /// get your domain banned by constant certificate renewal - static bool get stagingAcme => false; + static bool get stagingAcme => true; } diff --git a/lib/logic/cubit/server_installation/server_installation_cubit.dart b/lib/logic/cubit/server_installation/server_installation_cubit.dart index 940f6ede..dd8dd998 100644 --- a/lib/logic/cubit/server_installation/server_installation_cubit.dart +++ b/lib/logic/cubit/server_installation/server_installation_cubit.dart @@ -69,7 +69,7 @@ class ServerInstallationCubit extends Cubit { void setDnsProviderType(final DnsProviderType providerType) async { await repository.saveDnsProviderType(providerType); ApiController.initDnsProviderApiFactory( - DnsProviderFactorySettings( + DnsProviderSettings( provider: providerType, ), ); diff --git a/lib/logic/cubit/server_installation/server_installation_repository.dart b/lib/logic/cubit/server_installation/server_installation_repository.dart index 838fe6c9..55231904 100644 --- a/lib/logic/cubit/server_installation/server_installation_repository.dart +++ b/lib/logic/cubit/server_installation/server_installation_repository.dart @@ -73,7 +73,7 @@ class ServerInstallationRepository { (serverDomain != null && serverDomain.provider != ServerProviderType.unknown)) { ApiController.initDnsProviderApiFactory( - DnsProviderFactorySettings( + DnsProviderSettings( provider: dnsProvider ?? serverDomain!.provider, ), ); diff --git a/lib/logic/providers/dns_providers/cloudflare.dart b/lib/logic/providers/dns_providers/cloudflare.dart new file mode 100644 index 00000000..6f973a88 --- /dev/null +++ b/lib/logic/providers/dns_providers/cloudflare.dart @@ -0,0 +1,3 @@ +import 'package:selfprivacy/logic/providers/dns_providers/dns_provider.dart'; + +class CloudflareDnsProvider extends DnsProvider {} diff --git a/lib/logic/providers/dns_providers/digital_ocean.dart b/lib/logic/providers/dns_providers/digital_ocean.dart new file mode 100644 index 00000000..2a8df75b --- /dev/null +++ b/lib/logic/providers/dns_providers/digital_ocean.dart @@ -0,0 +1,3 @@ +import 'package:selfprivacy/logic/providers/dns_providers/dns_provider.dart'; + +class DigitalOceanDnsProvider extends DnsProvider {} diff --git a/lib/logic/providers/dns_providers/dns_provider.dart b/lib/logic/providers/dns_providers/dns_provider.dart new file mode 100644 index 00000000..9aa1f99d --- /dev/null +++ b/lib/logic/providers/dns_providers/dns_provider.dart @@ -0,0 +1 @@ +abstract class DnsProvider {} diff --git a/lib/logic/providers/dns_providers/dns_provider_factory.dart b/lib/logic/providers/dns_providers/dns_provider_factory.dart new file mode 100644 index 00000000..a5adebc9 --- /dev/null +++ b/lib/logic/providers/dns_providers/dns_provider_factory.dart @@ -0,0 +1,25 @@ +import 'package:selfprivacy/logic/models/hive/server_domain.dart'; +import 'package:selfprivacy/logic/providers/dns_providers/cloudflare.dart'; +import 'package:selfprivacy/logic/providers/dns_providers/digital_ocean.dart'; +import 'package:selfprivacy/logic/providers/dns_providers/dns_provider.dart'; +import 'package:selfprivacy/logic/providers/provider_settings.dart'; + +class UnknownProviderException implements Exception { + UnknownProviderException(this.message); + final String message; +} + +class DnsProviderFactory { + static DnsProvider createDnsProviderInterface( + final DnsProviderSettings settings, + ) { + switch (settings.provider) { + case DnsProviderType.cloudflare: + return CloudflareDnsProvider(); + case DnsProviderType.digitalOcean: + return DigitalOceanDnsProvider(); + case DnsProviderType.unknown: + throw UnknownProviderException('Unknown server provider'); + } + } +} diff --git a/lib/logic/providers/provider_settings.dart b/lib/logic/providers/provider_settings.dart index 8145cff7..8ffe79e6 100644 --- a/lib/logic/providers/provider_settings.dart +++ b/lib/logic/providers/provider_settings.dart @@ -11,8 +11,8 @@ class ServerProviderSettings { final String? location; } -class DnsProviderFactorySettings { - DnsProviderFactorySettings({ +class DnsProviderSettings { + DnsProviderSettings({ required this.provider, }); diff --git a/lib/logic/providers/providers_controller.dart b/lib/logic/providers/providers_controller.dart index bd72a59e..dab74221 100644 --- a/lib/logic/providers/providers_controller.dart +++ b/lib/logic/providers/providers_controller.dart @@ -1,20 +1,34 @@ +import 'package:selfprivacy/logic/providers/dns_providers/dns_provider.dart'; +import 'package:selfprivacy/logic/providers/dns_providers/dns_provider_factory.dart'; import 'package:selfprivacy/logic/providers/provider_settings.dart'; -import 'package:selfprivacy/logic/providers/server_provider.dart'; +import 'package:selfprivacy/logic/providers/server_providers/server_provider.dart'; import 'package:selfprivacy/logic/providers/server_providers/server_provider_factory.dart'; class ProvidersController { static ServerProvider? get currentServerProvider => _serverProvider; + static DnsProvider? get currentDnsProvider => _dnsProvider; static void initServerProvider( final ServerProviderSettings settings, ) { - _serverProvider = - ServerProviderFactory.createServerProviderInterface(settings); + _serverProvider = ServerProviderFactory.createServerProviderInterface( + settings, + ); + } + + static void initDnsProvider( + final DnsProviderSettings settings, + ) { + _dnsProvider = DnsProviderFactory.createDnsProviderInterface( + settings, + ); } static void clearProviders() { _serverProvider = null; + _dnsProvider = null; } static ServerProvider? _serverProvider; + static DnsProvider? _dnsProvider; } diff --git a/lib/logic/providers/server_providers/digital_ocean.dart b/lib/logic/providers/server_providers/digital_ocean.dart index 97317144..01b27ef1 100644 --- a/lib/logic/providers/server_providers/digital_ocean.dart +++ b/lib/logic/providers/server_providers/digital_ocean.dart @@ -12,7 +12,7 @@ import 'package:selfprivacy/logic/models/server_basic_info.dart'; import 'package:selfprivacy/logic/models/server_metadata.dart'; import 'package:selfprivacy/logic/models/server_provider_location.dart'; import 'package:selfprivacy/logic/models/server_type.dart'; -import 'package:selfprivacy/logic/providers/server_provider.dart'; +import 'package:selfprivacy/logic/providers/server_providers/server_provider.dart'; import 'package:selfprivacy/utils/extensions/string_extensions.dart'; import 'package:selfprivacy/utils/network_utils.dart'; import 'package:selfprivacy/utils/password_generator.dart'; diff --git a/lib/logic/providers/server_providers/hetzner.dart b/lib/logic/providers/server_providers/hetzner.dart index 7d4221fa..9e6cce8b 100644 --- a/lib/logic/providers/server_providers/hetzner.dart +++ b/lib/logic/providers/server_providers/hetzner.dart @@ -13,7 +13,7 @@ import 'package:selfprivacy/logic/models/server_basic_info.dart'; import 'package:selfprivacy/logic/models/server_metadata.dart'; import 'package:selfprivacy/logic/models/server_provider_location.dart'; import 'package:selfprivacy/logic/models/server_type.dart'; -import 'package:selfprivacy/logic/providers/server_provider.dart'; +import 'package:selfprivacy/logic/providers/server_providers/server_provider.dart'; import 'package:selfprivacy/utils/extensions/string_extensions.dart'; import 'package:selfprivacy/utils/network_utils.dart'; import 'package:selfprivacy/utils/password_generator.dart'; diff --git a/lib/logic/providers/server_provider.dart b/lib/logic/providers/server_providers/server_provider.dart similarity index 100% rename from lib/logic/providers/server_provider.dart rename to lib/logic/providers/server_providers/server_provider.dart diff --git a/lib/logic/providers/server_providers/server_provider_factory.dart b/lib/logic/providers/server_providers/server_provider_factory.dart index 2d35ecba..786b1c02 100644 --- a/lib/logic/providers/server_providers/server_provider_factory.dart +++ b/lib/logic/providers/server_providers/server_provider_factory.dart @@ -1,6 +1,6 @@ import 'package:selfprivacy/logic/providers/provider_settings.dart'; import 'package:selfprivacy/logic/models/hive/server_details.dart'; -import 'package:selfprivacy/logic/providers/server_provider.dart'; +import 'package:selfprivacy/logic/providers/server_providers/server_provider.dart'; import 'package:selfprivacy/logic/providers/server_providers/digital_ocean.dart'; import 'package:selfprivacy/logic/providers/server_providers/hetzner.dart';