From a69b096d6f9a2037c052e295afd04630255d7d03 Mon Sep 17 00:00:00 2001 From: NaiJi Date: Wed, 26 Oct 2022 20:07:35 +0400 Subject: [PATCH] fix(digital-ocean): Change /locations to /regions and fix tokens validation --- .../digital_ocean/digital_ocean.dart | 15 ++++++++++++--- .../server_providers/hetzner/hetzner.dart | 7 +++++-- .../server_providers/server_provider.dart | 13 ++++++++++--- .../setup/initializing/provider_form_cubit.dart | 4 +++- .../server_installation_cubit.dart | 3 ++- 5 files changed, 32 insertions(+), 10 deletions(-) diff --git a/lib/logic/api_maps/rest_maps/server_providers/digital_ocean/digital_ocean.dart b/lib/logic/api_maps/rest_maps/server_providers/digital_ocean/digital_ocean.dart index 4bc13ae7..a878b958 100644 --- a/lib/logic/api_maps/rest_maps/server_providers/digital_ocean/digital_ocean.dart +++ b/lib/logic/api_maps/rest_maps/server_providers/digital_ocean/digital_ocean.dart @@ -195,7 +195,9 @@ class DigitalOceanApi extends ServerProviderApi with VolumeProviderApi { @override Future attachVolume( - final ServerVolume volume, final int serverId) async { + final ServerVolume volume, + final int serverId, + ) async { bool success = false; final Response dbPostResponse; @@ -518,10 +520,10 @@ class DigitalOceanApi extends ServerProviderApi with VolumeProviderApi { final Dio client = await getClient(); try { final Response response = await client.get( - '/locations', + '/regions', ); - locations = response.data!['locations'].map( + locations = response.data!['regions'].map( (final location) => ServerProviderLocation( title: location['slug'], description: location['name'], @@ -586,4 +588,11 @@ class DigitalOceanApi extends ServerProviderApi with VolumeProviderApi { }) async { /// TODO remove from provider interface } + + @override + ProviderApiTokenValidation getApiTokenValidation() => + ProviderApiTokenValidation( + regexp: RegExp(r'\s+|[-!$%^&*()@+|~=`{}\[\]:<>?,.\/]'), + length: 71, + ); } diff --git a/lib/logic/api_maps/rest_maps/server_providers/hetzner/hetzner.dart b/lib/logic/api_maps/rest_maps/server_providers/hetzner/hetzner.dart index c5360a2d..70094eb6 100644 --- a/lib/logic/api_maps/rest_maps/server_providers/hetzner/hetzner.dart +++ b/lib/logic/api_maps/rest_maps/server_providers/hetzner/hetzner.dart @@ -81,8 +81,11 @@ class HetznerApi extends ServerProviderApi with VolumeProviderApi { } @override - RegExp getApiTokenValidation() => - RegExp(r'\s+|[-!$%^&*()@+|~=`{}\[\]:<>?,.\/]'); + ProviderApiTokenValidation getApiTokenValidation() => + ProviderApiTokenValidation( + regexp: RegExp(r'\s+|[-!$%^&*()@+|~=`{}\[\]:<>?,.\/]'), + length: 64, + ); @override Future getPricePerGb() async { diff --git a/lib/logic/api_maps/rest_maps/server_providers/server_provider.dart b/lib/logic/api_maps/rest_maps/server_providers/server_provider.dart index cd28b46f..7d42c0ab 100644 --- a/lib/logic/api_maps/rest_maps/server_providers/server_provider.dart +++ b/lib/logic/api_maps/rest_maps/server_providers/server_provider.dart @@ -6,6 +6,15 @@ import 'package:selfprivacy/logic/models/server_basic_info.dart'; import 'package:selfprivacy/logic/models/server_provider_location.dart'; import 'package:selfprivacy/logic/models/server_type.dart'; +class ProviderApiTokenValidation { + ProviderApiTokenValidation({ + required this.length, + required this.regexp, + }); + final int length; + final RegExp regexp; +} + abstract class ServerProviderApi extends ApiMap { Future> getServers(); Future> getAvailableLocations(); @@ -29,7 +38,5 @@ abstract class ServerProviderApi extends ApiMap { }); Future isApiTokenValid(final String token); - RegExp getApiTokenValidation() => RegExp( - r'\s+|[-!$%^&*()@+|~=`{}\[\]:<>?,.\/]', - ); + ProviderApiTokenValidation getApiTokenValidation(); } diff --git a/lib/logic/cubit/forms/setup/initializing/provider_form_cubit.dart b/lib/logic/cubit/forms/setup/initializing/provider_form_cubit.dart index 7405073e..a99ebea9 100644 --- a/lib/logic/cubit/forms/setup/initializing/provider_form_cubit.dart +++ b/lib/logic/cubit/forms/setup/initializing/provider_form_cubit.dart @@ -7,11 +7,13 @@ import 'package:selfprivacy/logic/cubit/forms/validations/validations.dart'; class ProviderFormCubit extends FormCubit { ProviderFormCubit(this.serverInstallationCubit) { + //final int tokenLength = + // serverInstallationCubit.serverProviderApiTokenValidation().length; apiKey = FieldCubit( initalValue: '', validations: [ RequiredStringValidation('validations.required'.tr()), - LengthStringNotEqualValidation(64) + //LengthStringNotEqualValidation(tokenLength), ], ); diff --git a/lib/logic/cubit/server_installation/server_installation_cubit.dart b/lib/logic/cubit/server_installation/server_installation_cubit.dart index 824713ef..6ff73893 100644 --- a/lib/logic/cubit/server_installation/server_installation_cubit.dart +++ b/lib/logic/cubit/server_installation/server_installation_cubit.dart @@ -7,6 +7,7 @@ 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_settings.dart'; import 'package:selfprivacy/logic/api_maps/rest_maps/dns_providers/dns_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_api_settings.dart'; import 'package:selfprivacy/logic/models/hive/backblaze_credential.dart'; import 'package:selfprivacy/logic/models/hive/server_details.dart'; @@ -65,7 +66,7 @@ class ServerInstallationCubit extends Cubit { ); } - RegExp getServerProviderApiTokenValidation() => + ProviderApiTokenValidation serverProviderApiTokenValidation() => repository.serverProviderApiFactory! .getServerProvider() .getApiTokenValidation();