fix(digital-ocean): Change /locations to /regions and fix tokens validation

routes-refactor
NaiJi ✨ 2022-10-26 20:07:35 +04:00
parent 5ddbfcb342
commit a69b096d6f
5 changed files with 32 additions and 10 deletions

View File

@ -195,7 +195,9 @@ class DigitalOceanApi extends ServerProviderApi with VolumeProviderApi {
@override @override
Future<bool> attachVolume( Future<bool> attachVolume(
final ServerVolume volume, final int serverId) async { final ServerVolume volume,
final int serverId,
) async {
bool success = false; bool success = false;
final Response dbPostResponse; final Response dbPostResponse;
@ -518,10 +520,10 @@ class DigitalOceanApi extends ServerProviderApi with VolumeProviderApi {
final Dio client = await getClient(); final Dio client = await getClient();
try { try {
final Response response = await client.get( final Response response = await client.get(
'/locations', '/regions',
); );
locations = response.data!['locations'].map<ServerProviderLocation>( locations = response.data!['regions'].map<ServerProviderLocation>(
(final location) => ServerProviderLocation( (final location) => ServerProviderLocation(
title: location['slug'], title: location['slug'],
description: location['name'], description: location['name'],
@ -586,4 +588,11 @@ class DigitalOceanApi extends ServerProviderApi with VolumeProviderApi {
}) async { }) async {
/// TODO remove from provider interface /// TODO remove from provider interface
} }
@override
ProviderApiTokenValidation getApiTokenValidation() =>
ProviderApiTokenValidation(
regexp: RegExp(r'\s+|[-!$%^&*()@+|~=`{}\[\]:<>?,.\/]'),
length: 71,
);
} }

View File

@ -81,8 +81,11 @@ class HetznerApi extends ServerProviderApi with VolumeProviderApi {
} }
@override @override
RegExp getApiTokenValidation() => ProviderApiTokenValidation getApiTokenValidation() =>
RegExp(r'\s+|[-!$%^&*()@+|~=`{}\[\]:<>?,.\/]'); ProviderApiTokenValidation(
regexp: RegExp(r'\s+|[-!$%^&*()@+|~=`{}\[\]:<>?,.\/]'),
length: 64,
);
@override @override
Future<Price?> getPricePerGb() async { Future<Price?> getPricePerGb() async {

View File

@ -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_provider_location.dart';
import 'package:selfprivacy/logic/models/server_type.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 { abstract class ServerProviderApi extends ApiMap {
Future<List<ServerBasicInfo>> getServers(); Future<List<ServerBasicInfo>> getServers();
Future<List<ServerProviderLocation>> getAvailableLocations(); Future<List<ServerProviderLocation>> getAvailableLocations();
@ -29,7 +38,5 @@ abstract class ServerProviderApi extends ApiMap {
}); });
Future<bool> isApiTokenValid(final String token); Future<bool> isApiTokenValid(final String token);
RegExp getApiTokenValidation() => RegExp( ProviderApiTokenValidation getApiTokenValidation();
r'\s+|[-!$%^&*()@+|~=`{}\[\]:<>?,.\/]',
);
} }

View File

@ -7,11 +7,13 @@ import 'package:selfprivacy/logic/cubit/forms/validations/validations.dart';
class ProviderFormCubit extends FormCubit { class ProviderFormCubit extends FormCubit {
ProviderFormCubit(this.serverInstallationCubit) { ProviderFormCubit(this.serverInstallationCubit) {
//final int tokenLength =
// serverInstallationCubit.serverProviderApiTokenValidation().length;
apiKey = FieldCubit( apiKey = FieldCubit(
initalValue: '', initalValue: '',
validations: [ validations: [
RequiredStringValidation('validations.required'.tr()), RequiredStringValidation('validations.required'.tr()),
LengthStringNotEqualValidation(64) //LengthStringNotEqualValidation(tokenLength),
], ],
); );

View File

@ -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_creator.dart';
import 'package:selfprivacy/logic/api_maps/rest_maps/api_factory_settings.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/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/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';
@ -65,7 +66,7 @@ class ServerInstallationCubit extends Cubit<ServerInstallationState> {
); );
} }
RegExp getServerProviderApiTokenValidation() => ProviderApiTokenValidation serverProviderApiTokenValidation() =>
repository.serverProviderApiFactory! repository.serverProviderApiFactory!
.getServerProvider() .getServerProvider()
.getApiTokenValidation(); .getApiTokenValidation();