feat(region): Remove hardcode for region of server installation

routes-refactor
NaiJi ✨ 2022-10-13 21:15:42 +00:00
parent f40ed08b02
commit 2f59954641
15 changed files with 78 additions and 49 deletions

View File

@ -1,5 +1,6 @@
import 'package:selfprivacy/logic/api_maps/rest_maps/dns_providers/cloudflare/cloudflare.dart'; import 'package:selfprivacy/logic/api_maps/rest_maps/dns_providers/cloudflare/cloudflare.dart';
import 'package:selfprivacy/logic/api_maps/rest_maps/dns_providers/dns_provider.dart'; import 'package:selfprivacy/logic/api_maps/rest_maps/dns_providers/dns_provider.dart';
import 'package:selfprivacy/logic/api_maps/rest_maps/dns_providers/dns_provider_api_settings.dart';
import 'package:selfprivacy/logic/api_maps/rest_maps/dns_providers/dns_provider_factory.dart'; import 'package:selfprivacy/logic/api_maps/rest_maps/dns_providers/dns_provider_factory.dart';
class CloudflareApiFactory extends DnsProviderApiFactory { class CloudflareApiFactory extends DnsProviderApiFactory {

View File

@ -0,0 +1,10 @@
import 'package:selfprivacy/logic/api_maps/rest_maps/provider_api_settings.dart';
class DnsProviderApiSettings extends ProviderApiSettings {
const DnsProviderApiSettings({
super.hasLogger = false,
super.isWithToken = true,
this.customToken,
});
final String? customToken;
}

View File

@ -1,17 +1,8 @@
import 'package:selfprivacy/logic/api_maps/rest_maps/dns_providers/dns_provider.dart'; import 'package:selfprivacy/logic/api_maps/rest_maps/dns_providers/dns_provider.dart';
import 'package:selfprivacy/logic/api_maps/rest_maps/provider_api_settings.dart'; import 'package:selfprivacy/logic/api_maps/rest_maps/dns_providers/dns_provider_api_settings.dart';
class DnsProviderApiSettings extends ProviderApiSettings {
const DnsProviderApiSettings({
final super.hasLogger = false,
final super.isWithToken = true,
final this.customToken,
});
final String? customToken;
}
abstract class DnsProviderApiFactory { abstract class DnsProviderApiFactory {
DnsProviderApi getDnsProvider({ DnsProviderApi getDnsProvider({
final DnsProviderApiSettings settings = const DnsProviderApiSettings(), final DnsProviderApiSettings settings,
}); });
} }

View File

@ -1,5 +1,8 @@
class ProviderApiSettings { class ProviderApiSettings {
const ProviderApiSettings({this.hasLogger = false, this.isWithToken = true}); const ProviderApiSettings({
this.hasLogger = false,
this.isWithToken = true,
});
final bool hasLogger; final bool hasLogger;
final bool isWithToken; final bool isWithToken;
} }

View File

@ -15,6 +15,7 @@ import 'package:selfprivacy/utils/password_generator.dart';
class DigitalOceanApi extends ServerProviderApi with VolumeProviderApi { class DigitalOceanApi extends ServerProviderApi with VolumeProviderApi {
DigitalOceanApi({ DigitalOceanApi({
required this.region,
this.hasLogger = false, this.hasLogger = false,
this.isWithToken = true, this.isWithToken = true,
}); });
@ -23,7 +24,7 @@ class DigitalOceanApi extends ServerProviderApi with VolumeProviderApi {
@override @override
bool isWithToken; bool isWithToken;
final String region = 'fra1'; final String region;
@override @override
BaseOptions get options { BaseOptions get options {
@ -318,6 +319,7 @@ class DigitalOceanApi extends ServerProviderApi with VolumeProviderApi {
final String dbPassword = StringGenerators.dbPassword(); final String dbPassword = StringGenerators.dbPassword();
final int dbId = dataBase.id; final int dbId = dataBase.id;
final String? dbUuid = dataBase.uuid;
final String apiToken = StringGenerators.apiToken(); final String apiToken = StringGenerators.apiToken();
final String hostname = getHostnameFromDomain(domainName); final String hostname = getHostnameFromDomain(domainName);
@ -334,7 +336,7 @@ class DigitalOceanApi extends ServerProviderApi with VolumeProviderApi {
'server_type': 'cx11', 'server_type': 'cx11',
'start_after_create': false, 'start_after_create': false,
'image': 'ubuntu-20.04', 'image': 'ubuntu-20.04',
'volumes': [dbId], 'volumes': dbUuid == null ? [dbId] : [dbUuid],
'networks': [], 'networks': [],
'user_data': userdataString, 'user_data': userdataString,
'labels': {}, 'labels': {},
@ -373,7 +375,7 @@ class DigitalOceanApi extends ServerProviderApi with VolumeProviderApi {
if (!success) { if (!success) {
await Future.delayed(const Duration(seconds: 10)); await Future.delayed(const Duration(seconds: 10));
await deleteVolume(dbId); await deleteVolume(dbUuid ?? dbId.toString());
} }
if (hetznerError != null) { if (hetznerError != null) {

View File

@ -1,6 +1,6 @@
import 'package:selfprivacy/logic/api_maps/rest_maps/provider_api_settings.dart';
import 'package:selfprivacy/logic/api_maps/rest_maps/server_providers/digital_ocean/digital_ocean.dart'; import 'package:selfprivacy/logic/api_maps/rest_maps/server_providers/digital_ocean/digital_ocean.dart';
import 'package:selfprivacy/logic/api_maps/rest_maps/server_providers/server_provider.dart'; import 'package:selfprivacy/logic/api_maps/rest_maps/server_providers/server_provider.dart';
import 'package:selfprivacy/logic/api_maps/rest_maps/server_providers/server_provider_api_settings.dart';
import 'package:selfprivacy/logic/api_maps/rest_maps/server_providers/server_provider_factory.dart'; import 'package:selfprivacy/logic/api_maps/rest_maps/server_providers/server_provider_factory.dart';
import 'package:selfprivacy/logic/api_maps/rest_maps/server_providers/volume_provider.dart'; import 'package:selfprivacy/logic/api_maps/rest_maps/server_providers/volume_provider.dart';
@ -8,18 +8,20 @@ class DigitalOceanApiFactory extends ServerProviderApiFactory
with VolumeProviderApiFactory { with VolumeProviderApiFactory {
@override @override
ServerProviderApi getServerProvider({ ServerProviderApi getServerProvider({
final ProviderApiSettings settings = const ProviderApiSettings(), required final ServerProviderApiSettings settings,
}) => }) =>
DigitalOceanApi( DigitalOceanApi(
region: settings.region,
hasLogger: settings.hasLogger, hasLogger: settings.hasLogger,
isWithToken: settings.isWithToken, isWithToken: settings.isWithToken,
); );
@override @override
VolumeProviderApi getVolumeProvider({ VolumeProviderApi getVolumeProvider({
final ProviderApiSettings settings = const ProviderApiSettings(), required final ServerProviderApiSettings settings,
}) => }) =>
DigitalOceanApi( DigitalOceanApi(
region: settings.region,
hasLogger: settings.hasLogger, hasLogger: settings.hasLogger,
isWithToken: settings.isWithToken, isWithToken: settings.isWithToken,
); );

View File

@ -14,12 +14,14 @@ import 'package:selfprivacy/logic/models/server_basic_info.dart';
import 'package:selfprivacy/utils/password_generator.dart'; import 'package:selfprivacy/utils/password_generator.dart';
class HetznerApi extends ServerProviderApi with VolumeProviderApi { class HetznerApi extends ServerProviderApi with VolumeProviderApi {
HetznerApi({final this.hasLogger = false, final this.isWithToken = true}); HetznerApi({required this.region, this.hasLogger = false, this.isWithToken = true,});
@override @override
bool hasLogger; bool hasLogger;
@override @override
bool isWithToken; bool isWithToken;
final String region;
@override @override
BaseOptions get options { BaseOptions get options {
final BaseOptions options = BaseOptions(baseUrl: rootAddress); final BaseOptions options = BaseOptions(baseUrl: rootAddress);
@ -114,7 +116,7 @@ class HetznerApi extends ServerProviderApi with VolumeProviderApi {
'size': 10, 'size': 10,
'name': StringGenerators.dbStorageName(), 'name': StringGenerators.dbStorageName(),
'labels': {'labelkey': 'value'}, 'labels': {'labelkey': 'value'},
'location': 'fsn1', 'location': region,
'automount': false, 'automount': false,
'format': 'ext4' 'format': 'ext4'
}, },
@ -337,7 +339,7 @@ class HetznerApi extends ServerProviderApi with VolumeProviderApi {
'user_data': userdataString, 'user_data': userdataString,
'labels': {}, 'labels': {},
'automount': true, 'automount': true,
'location': 'fsn1' 'location': region,
}; };
print('Decoded data: $data'); print('Decoded data: $data');

View File

@ -1,6 +1,6 @@
import 'package:selfprivacy/logic/api_maps/rest_maps/provider_api_settings.dart';
import 'package:selfprivacy/logic/api_maps/rest_maps/server_providers/hetzner/hetzner.dart'; import 'package:selfprivacy/logic/api_maps/rest_maps/server_providers/hetzner/hetzner.dart';
import 'package:selfprivacy/logic/api_maps/rest_maps/server_providers/server_provider.dart'; import 'package:selfprivacy/logic/api_maps/rest_maps/server_providers/server_provider.dart';
import 'package:selfprivacy/logic/api_maps/rest_maps/server_providers/server_provider_api_settings.dart';
import 'package:selfprivacy/logic/api_maps/rest_maps/server_providers/server_provider_factory.dart'; import 'package:selfprivacy/logic/api_maps/rest_maps/server_providers/server_provider_factory.dart';
import 'package:selfprivacy/logic/api_maps/rest_maps/server_providers/volume_provider.dart'; import 'package:selfprivacy/logic/api_maps/rest_maps/server_providers/volume_provider.dart';
@ -8,18 +8,20 @@ class HetznerApiFactory extends ServerProviderApiFactory
with VolumeProviderApiFactory { with VolumeProviderApiFactory {
@override @override
ServerProviderApi getServerProvider({ ServerProviderApi getServerProvider({
final ProviderApiSettings settings = const ProviderApiSettings(), required final ServerProviderApiSettings settings,
}) => }) =>
HetznerApi( HetznerApi(
region: settings.region,
hasLogger: settings.hasLogger, hasLogger: settings.hasLogger,
isWithToken: settings.isWithToken, isWithToken: settings.isWithToken,
); );
@override @override
VolumeProviderApi getVolumeProvider({ VolumeProviderApi getVolumeProvider({
final ProviderApiSettings settings = const ProviderApiSettings(), required final ServerProviderApiSettings settings,
}) => }) =>
HetznerApi( HetznerApi(
region: settings.region,
hasLogger: settings.hasLogger, hasLogger: settings.hasLogger,
isWithToken: settings.isWithToken, isWithToken: settings.isWithToken,
); );

View File

@ -0,0 +1,11 @@
import 'package:selfprivacy/logic/api_maps/rest_maps/provider_api_settings.dart';
class ServerProviderApiSettings extends ProviderApiSettings {
const ServerProviderApiSettings({
required this.region,
super.hasLogger = false,
super.isWithToken = true,
});
final String region;
}

View File

@ -1,15 +1,15 @@
import 'package:selfprivacy/logic/api_maps/rest_maps/provider_api_settings.dart';
import 'package:selfprivacy/logic/api_maps/rest_maps/server_providers/server_provider.dart'; import 'package:selfprivacy/logic/api_maps/rest_maps/server_providers/server_provider.dart';
import 'package:selfprivacy/logic/api_maps/rest_maps/server_providers/server_provider_api_settings.dart';
import 'package:selfprivacy/logic/api_maps/rest_maps/server_providers/volume_provider.dart'; import 'package:selfprivacy/logic/api_maps/rest_maps/server_providers/volume_provider.dart';
abstract class ServerProviderApiFactory { abstract class ServerProviderApiFactory {
ServerProviderApi getServerProvider({ ServerProviderApi getServerProvider({
final ProviderApiSettings settings = const ProviderApiSettings(), required final ServerProviderApiSettings settings,
}); });
} }
mixin VolumeProviderApiFactory { mixin VolumeProviderApiFactory {
VolumeProviderApi getVolumeProvider({ VolumeProviderApi getVolumeProvider({
final ProviderApiSettings settings = const ProviderApiSettings(), required final ServerProviderApiSettings settings,
}); });
} }

View File

@ -26,7 +26,7 @@ class HetznerMetricsRepository {
break; break;
} }
final HetznerApi api = HetznerApi(hasLogger: false); final HetznerApi api = HetznerApi(hasLogger: false, region: 'fra1',);
final List<Map<String, dynamic>> results = await Future.wait([ final List<Map<String, dynamic>> results = await Future.wait([
api.getMetrics(start, end, 'cpu'), api.getMetrics(start, end, 'cpu'),

View File

@ -2,6 +2,7 @@ import 'package:easy_localization/easy_localization.dart';
import 'package:selfprivacy/config/get_it_config.dart'; import 'package:selfprivacy/config/get_it_config.dart';
import 'package:selfprivacy/logic/api_maps/graphql_maps/server_api/server.dart'; import 'package:selfprivacy/logic/api_maps/graphql_maps/server_api/server.dart';
import 'package:selfprivacy/logic/api_maps/rest_maps/api_factory_creator.dart'; import 'package:selfprivacy/logic/api_maps/rest_maps/api_factory_creator.dart';
import 'package:selfprivacy/logic/api_maps/rest_maps/server_providers/server_provider_api_settings.dart';
import 'package:selfprivacy/logic/api_maps/rest_maps/server_providers/server_provider_factory.dart'; import 'package:selfprivacy/logic/api_maps/rest_maps/server_providers/server_provider_factory.dart';
import 'package:selfprivacy/logic/common_enum/common_enum.dart'; import 'package:selfprivacy/logic/common_enum/common_enum.dart';
import 'package:selfprivacy/logic/cubit/app_config_dependent/authentication_dependend_cubit.dart'; import 'package:selfprivacy/logic/cubit/app_config_dependent/authentication_dependend_cubit.dart';
@ -34,7 +35,7 @@ class ApiProviderVolumeCubit
} }
Future<Price?> getPricePerGb() async => Future<Price?> getPricePerGb() async =>
providerApi!.getVolumeProvider().getPricePerGb(); providerApi!.getVolumeProvider(settings: const ServerProviderApiSettings(region: 'fra1',),).getPricePerGb();
Future<void> refresh() async { Future<void> refresh() async {
emit(const ApiProviderVolumeState([], LoadingStatus.refreshing, false)); emit(const ApiProviderVolumeState([], LoadingStatus.refreshing, false));
@ -47,7 +48,7 @@ class ApiProviderVolumeCubit
} }
final List<ServerVolume> volumes = final List<ServerVolume> volumes =
await providerApi!.getVolumeProvider().getVolumes(); await providerApi!.getVolumeProvider(settings: const ServerProviderApiSettings(region: 'fra1',),).getVolumes();
if (volumes.isEmpty) { if (volumes.isEmpty) {
return emit(const ApiProviderVolumeState([], LoadingStatus.error, false)); return emit(const ApiProviderVolumeState([], LoadingStatus.error, false));
@ -59,15 +60,15 @@ class ApiProviderVolumeCubit
Future<void> attachVolume(final DiskVolume volume) async { Future<void> attachVolume(final DiskVolume volume) async {
final ServerHostingDetails server = getIt<ApiConfigModel>().serverDetails!; final ServerHostingDetails server = getIt<ApiConfigModel>().serverDetails!;
await providerApi! await providerApi!
.getVolumeProvider() .getVolumeProvider(settings: const ServerProviderApiSettings(region: 'fra1',),)
.attachVolume(volume.providerVolume!.id, server.id); .attachVolume(volume.providerVolume!.id.toString(), server.id);
refresh(); refresh();
} }
Future<void> detachVolume(final DiskVolume volume) async { Future<void> detachVolume(final DiskVolume volume) async {
await providerApi! await providerApi!
.getVolumeProvider() .getVolumeProvider(settings: const ServerProviderApiSettings(region: 'fra1',),)
.detachVolume(volume.providerVolume!.id); .detachVolume(volume.providerVolume!.id.toString());
refresh(); refresh();
} }
@ -80,8 +81,8 @@ class ApiProviderVolumeCubit
'Starting resize', 'Starting resize',
); );
emit(state.copyWith(isResizing: true)); emit(state.copyWith(isResizing: true));
final bool resized = await providerApi!.getVolumeProvider().resizeVolume( final bool resized = await providerApi!.getVolumeProvider(settings: const ServerProviderApiSettings(region: 'fra1',),).resizeVolume(
volume.providerVolume!.id, volume.providerVolume!.id.toString(),
newSizeGb, newSizeGb,
); );
@ -117,7 +118,7 @@ class ApiProviderVolumeCubit
Future<void> createVolume() async { Future<void> createVolume() async {
final ServerVolume? volume = final ServerVolume? volume =
await providerApi!.getVolumeProvider().createVolume(); await providerApi!.getVolumeProvider(settings: const ServerProviderApiSettings(region: 'fra1',),).createVolume();
final diskVolume = DiskVolume(providerVolume: volume); final diskVolume = DiskVolume(providerVolume: volume);
await attachVolume(diskVolume); await attachVolume(diskVolume);
@ -130,8 +131,8 @@ class ApiProviderVolumeCubit
Future<void> deleteVolume(final DiskVolume volume) async { Future<void> deleteVolume(final DiskVolume volume) async {
await providerApi! await providerApi!
.getVolumeProvider() .getVolumeProvider(settings: const ServerProviderApiSettings(region: 'fra1',),)
.deleteVolume(volume.providerVolume!.id); .deleteVolume(volume.providerVolume!.id.toString());
refresh(); refresh();
} }

View File

@ -5,7 +5,7 @@ import 'package:selfprivacy/logic/models/json/hetzner_server_info.dart';
import 'package:selfprivacy/logic/models/timezone_settings.dart'; import 'package:selfprivacy/logic/models/timezone_settings.dart';
class ServerDetailsRepository { class ServerDetailsRepository {
HetznerApi hetzner = HetznerApi(); HetznerApi hetzner = HetznerApi(region: 'fra1');
ServerApi server = ServerApi(); ServerApi server = ServerApi();
Future<ServerDetailsRepositoryDto> load() async { Future<ServerDetailsRepositoryDto> load() async {

View File

@ -5,8 +5,10 @@ import 'package:easy_localization/easy_localization.dart';
import 'package:equatable/equatable.dart'; import 'package:equatable/equatable.dart';
import 'package:selfprivacy/config/get_it_config.dart'; import 'package:selfprivacy/config/get_it_config.dart';
import 'package:selfprivacy/logic/api_maps/rest_maps/api_factory_creator.dart'; import 'package:selfprivacy/logic/api_maps/rest_maps/api_factory_creator.dart';
import 'package:selfprivacy/logic/api_maps/rest_maps/dns_providers/dns_provider_api_settings.dart';
import 'package:selfprivacy/logic/api_maps/rest_maps/dns_providers/dns_provider_factory.dart'; import 'package:selfprivacy/logic/api_maps/rest_maps/dns_providers/dns_provider_factory.dart';
import 'package:selfprivacy/logic/api_maps/rest_maps/provider_api_settings.dart'; import 'package:selfprivacy/logic/api_maps/rest_maps/provider_api_settings.dart';
import 'package:selfprivacy/logic/api_maps/rest_maps/server_providers/server_provider_api_settings.dart';
import 'package:selfprivacy/logic/models/hive/backblaze_credential.dart'; import 'package:selfprivacy/logic/models/hive/backblaze_credential.dart';
import 'package:selfprivacy/logic/models/hive/server_details.dart'; import 'package:selfprivacy/logic/models/hive/server_details.dart';
import 'package:selfprivacy/logic/models/hive/server_domain.dart'; import 'package:selfprivacy/logic/models/hive/server_domain.dart';
@ -61,7 +63,7 @@ class ServerInstallationCubit extends Cubit<ServerInstallationState> {
RegExp getServerProviderApiTokenValidation() => RegExp getServerProviderApiTokenValidation() =>
repository.serverProviderApiFactory! repository.serverProviderApiFactory!
.getServerProvider() .getServerProvider(settings: const ServerProviderApiSettings(region: 'fra1',),)
.getApiTokenValidation(); .getApiTokenValidation();
RegExp getDnsProviderApiTokenValidation() => repository.dnsProviderApiFactory! RegExp getDnsProviderApiTokenValidation() => repository.dnsProviderApiFactory!
@ -73,7 +75,7 @@ class ServerInstallationCubit extends Cubit<ServerInstallationState> {
) async => ) async =>
repository.serverProviderApiFactory! repository.serverProviderApiFactory!
.getServerProvider( .getServerProvider(
settings: const ProviderApiSettings(isWithToken: false), settings: const ServerProviderApiSettings(region: 'fra1', isWithToken: false),
) )
.isApiTokenValid(providerToken); .isApiTokenValid(providerToken);

View File

@ -11,9 +11,11 @@ import 'package:selfprivacy/config/get_it_config.dart';
import 'package:selfprivacy/config/hive_config.dart'; import 'package:selfprivacy/config/hive_config.dart';
import 'package:selfprivacy/logic/api_maps/rest_maps/api_factory_creator.dart'; import 'package:selfprivacy/logic/api_maps/rest_maps/api_factory_creator.dart';
import 'package:selfprivacy/logic/api_maps/rest_maps/dns_providers/dns_provider.dart'; import 'package:selfprivacy/logic/api_maps/rest_maps/dns_providers/dns_provider.dart';
import 'package:selfprivacy/logic/api_maps/rest_maps/dns_providers/dns_provider_api_settings.dart';
import 'package:selfprivacy/logic/api_maps/rest_maps/dns_providers/dns_provider_factory.dart'; import 'package:selfprivacy/logic/api_maps/rest_maps/dns_providers/dns_provider_factory.dart';
import 'package:selfprivacy/logic/api_maps/rest_maps/server.dart'; import 'package:selfprivacy/logic/api_maps/rest_maps/server.dart';
import 'package:selfprivacy/logic/api_maps/rest_maps/server_providers/server_provider.dart'; import 'package:selfprivacy/logic/api_maps/rest_maps/server_providers/server_provider.dart';
import 'package:selfprivacy/logic/api_maps/rest_maps/server_providers/server_provider_api_settings.dart';
import 'package:selfprivacy/logic/api_maps/rest_maps/server_providers/server_provider_factory.dart'; import 'package:selfprivacy/logic/api_maps/rest_maps/server_providers/server_provider_factory.dart';
import 'package:selfprivacy/logic/cubit/server_installation/server_installation_cubit.dart'; import 'package:selfprivacy/logic/cubit/server_installation/server_installation_cubit.dart';
import 'package:selfprivacy/logic/models/hive/backblaze_credential.dart'; import 'package:selfprivacy/logic/models/hive/backblaze_credential.dart';
@ -151,7 +153,7 @@ class ServerInstallationRepository {
) async { ) async {
ServerHostingDetails serverDetails; ServerHostingDetails serverDetails;
final ServerProviderApi api = serverProviderApiFactory!.getServerProvider(); final ServerProviderApi api = serverProviderApiFactory!.getServerProvider(settings: const ServerProviderApiSettings(region: 'fra1',),);
serverDetails = await api.powerOn(); serverDetails = await api.powerOn();
return serverDetails; return serverDetails;
@ -227,7 +229,7 @@ class ServerInstallationRepository {
required final Future<void> Function(ServerHostingDetails serverDetails) required final Future<void> Function(ServerHostingDetails serverDetails)
onSuccess, onSuccess,
}) async { }) async {
final ServerProviderApi api = serverProviderApiFactory!.getServerProvider(); final ServerProviderApi api = serverProviderApiFactory!.getServerProvider(settings: const ServerProviderApiSettings(region: 'fra1',),);
try { try {
final ServerHostingDetails? serverDetails = await api.createServer( final ServerHostingDetails? serverDetails = await api.createServer(
dnsApiToken: cloudFlareKey, dnsApiToken: cloudFlareKey,
@ -332,7 +334,7 @@ class ServerInstallationRepository {
final DnsProviderApi dnsProviderApi = final DnsProviderApi dnsProviderApi =
dnsProviderApiFactory!.getDnsProvider(); dnsProviderApiFactory!.getDnsProvider();
final ServerProviderApi serverApi = final ServerProviderApi serverApi =
serverProviderApiFactory!.getServerProvider(); serverProviderApiFactory!.getServerProvider(settings: const ServerProviderApiSettings(region: 'fra1',),);
await dnsProviderApi.removeSimilarRecords( await dnsProviderApi.removeSimilarRecords(
ip4: serverDetails.ip4, ip4: serverDetails.ip4,
@ -404,12 +406,12 @@ class ServerInstallationRepository {
} }
Future<ServerHostingDetails> restart() async { Future<ServerHostingDetails> restart() async {
final ServerProviderApi api = serverProviderApiFactory!.getServerProvider(); final ServerProviderApi api = serverProviderApiFactory!.getServerProvider(settings: const ServerProviderApiSettings(region: 'fra1',),);
return api.restart(); return api.restart();
} }
Future<ServerHostingDetails> powerOn() async { Future<ServerHostingDetails> powerOn() async {
final ServerProviderApi api = serverProviderApiFactory!.getServerProvider(); final ServerProviderApi api = serverProviderApiFactory!.getServerProvider(settings: const ServerProviderApiSettings(region: 'fra1',),);
return api.powerOn(); return api.powerOn();
} }
@ -652,7 +654,7 @@ class ServerInstallationRepository {
} }
Future<List<ServerBasicInfo>> getServersOnProviderAccount() async { Future<List<ServerBasicInfo>> getServersOnProviderAccount() async {
final ServerProviderApi api = serverProviderApiFactory!.getServerProvider(); final ServerProviderApi api = serverProviderApiFactory!.getServerProvider(settings: const ServerProviderApiSettings(region: 'fra1',),);
return api.getServers(); return api.getServers();
} }
@ -730,7 +732,7 @@ class ServerInstallationRepository {
} }
Future<void> deleteServer(final ServerDomain serverDomain) async { Future<void> deleteServer(final ServerDomain serverDomain) async {
final ServerProviderApi api = serverProviderApiFactory!.getServerProvider(); final ServerProviderApi api = serverProviderApiFactory!.getServerProvider(settings: const ServerProviderApiSettings(region: 'fra1',),);
final DnsProviderApi dnsProviderApi = final DnsProviderApi dnsProviderApi =
dnsProviderApiFactory!.getDnsProvider(); dnsProviderApiFactory!.getDnsProvider();