refactor: Create empty DnsProvider interfaces

pull/213/head
NaiJi ✨ 2023-05-02 23:42:18 -03:00
parent 0d55361a9b
commit 30385c2470
15 changed files with 59 additions and 13 deletions

View File

@ -7,7 +7,7 @@ class ApiController {
_dnsProviderApiFactory; _dnsProviderApiFactory;
static void initDnsProviderApiFactory( static void initDnsProviderApiFactory(
final DnsProviderFactorySettings settings, final DnsProviderSettings settings,
) { ) {
_dnsProviderApiFactory = _dnsProviderApiFactory =
ApiFactoryCreator.createDnsProviderApiFactory(settings); ApiFactoryCreator.createDnsProviderApiFactory(settings);

View File

@ -28,7 +28,7 @@ class ApiFactoryCreator {
} }
static DnsProviderApiFactory createDnsProviderApiFactory( static DnsProviderApiFactory createDnsProviderApiFactory(
final DnsProviderFactorySettings settings, final DnsProviderSettings settings,
) { ) {
switch (settings.provider) { switch (settings.provider) {
case DnsProviderType.cloudflare: case DnsProviderType.cloudflare:

View File

@ -4,5 +4,5 @@ class StagingOptions {
/// Whether we request for staging temprorary certificates. /// Whether we request for staging temprorary certificates.
/// Hardcode to 'true' in the middle of testing to not /// Hardcode to 'true' in the middle of testing to not
/// get your domain banned by constant certificate renewal /// get your domain banned by constant certificate renewal
static bool get stagingAcme => false; static bool get stagingAcme => true;
} }

View File

@ -69,7 +69,7 @@ class ServerInstallationCubit extends Cubit<ServerInstallationState> {
void setDnsProviderType(final DnsProviderType providerType) async { void setDnsProviderType(final DnsProviderType providerType) async {
await repository.saveDnsProviderType(providerType); await repository.saveDnsProviderType(providerType);
ApiController.initDnsProviderApiFactory( ApiController.initDnsProviderApiFactory(
DnsProviderFactorySettings( DnsProviderSettings(
provider: providerType, provider: providerType,
), ),
); );

View File

@ -73,7 +73,7 @@ class ServerInstallationRepository {
(serverDomain != null && (serverDomain != null &&
serverDomain.provider != ServerProviderType.unknown)) { serverDomain.provider != ServerProviderType.unknown)) {
ApiController.initDnsProviderApiFactory( ApiController.initDnsProviderApiFactory(
DnsProviderFactorySettings( DnsProviderSettings(
provider: dnsProvider ?? serverDomain!.provider, provider: dnsProvider ?? serverDomain!.provider,
), ),
); );

View File

@ -0,0 +1,3 @@
import 'package:selfprivacy/logic/providers/dns_providers/dns_provider.dart';
class CloudflareDnsProvider extends DnsProvider {}

View File

@ -0,0 +1,3 @@
import 'package:selfprivacy/logic/providers/dns_providers/dns_provider.dart';
class DigitalOceanDnsProvider extends DnsProvider {}

View File

@ -0,0 +1 @@
abstract class DnsProvider {}

View File

@ -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');
}
}
}

View File

@ -11,8 +11,8 @@ class ServerProviderSettings {
final String? location; final String? location;
} }
class DnsProviderFactorySettings { class DnsProviderSettings {
DnsProviderFactorySettings({ DnsProviderSettings({
required this.provider, required this.provider,
}); });

View File

@ -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/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'; import 'package:selfprivacy/logic/providers/server_providers/server_provider_factory.dart';
class ProvidersController { class ProvidersController {
static ServerProvider? get currentServerProvider => _serverProvider; static ServerProvider? get currentServerProvider => _serverProvider;
static DnsProvider? get currentDnsProvider => _dnsProvider;
static void initServerProvider( static void initServerProvider(
final ServerProviderSettings settings, final ServerProviderSettings settings,
) { ) {
_serverProvider = _serverProvider = ServerProviderFactory.createServerProviderInterface(
ServerProviderFactory.createServerProviderInterface(settings); settings,
);
}
static void initDnsProvider(
final DnsProviderSettings settings,
) {
_dnsProvider = DnsProviderFactory.createDnsProviderInterface(
settings,
);
} }
static void clearProviders() { static void clearProviders() {
_serverProvider = null; _serverProvider = null;
_dnsProvider = null;
} }
static ServerProvider? _serverProvider; static ServerProvider? _serverProvider;
static DnsProvider? _dnsProvider;
} }

View File

@ -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_metadata.dart';
import 'package:selfprivacy/logic/models/server_provider_location.dart'; import 'package:selfprivacy/logic/models/server_provider_location.dart';
import 'package:selfprivacy/logic/models/server_type.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/extensions/string_extensions.dart';
import 'package:selfprivacy/utils/network_utils.dart'; import 'package:selfprivacy/utils/network_utils.dart';
import 'package:selfprivacy/utils/password_generator.dart'; import 'package:selfprivacy/utils/password_generator.dart';

View File

@ -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_metadata.dart';
import 'package:selfprivacy/logic/models/server_provider_location.dart'; import 'package:selfprivacy/logic/models/server_provider_location.dart';
import 'package:selfprivacy/logic/models/server_type.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/extensions/string_extensions.dart';
import 'package:selfprivacy/utils/network_utils.dart'; import 'package:selfprivacy/utils/network_utils.dart';
import 'package:selfprivacy/utils/password_generator.dart'; import 'package:selfprivacy/utils/password_generator.dart';

View File

@ -1,6 +1,6 @@
import 'package:selfprivacy/logic/providers/provider_settings.dart'; import 'package:selfprivacy/logic/providers/provider_settings.dart';
import 'package:selfprivacy/logic/models/hive/server_details.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/digital_ocean.dart';
import 'package:selfprivacy/logic/providers/server_providers/hetzner.dart'; import 'package:selfprivacy/logic/providers/server_providers/hetzner.dart';