Implement Provider Api Abstractions #99

Merged
inex merged 2 commits from naiji-dev into develop 2022-07-13 21:46:35 +03:00
Collaborator
  • Hide Hetzner implementation behind ProviderApi interface
  • Implement creation system for supported providers: ProviderApiFactory
  • Separate Rest Api maps from GraphQL Api Maps
  • Add GraphQL dependencies
- Hide Hetzner implementation behind ProviderApi interface - Implement creation system for supported providers: ProviderApiFactory - Separate Rest Api maps from GraphQL Api Maps - Add GraphQL dependencies
inex was assigned by NaiJi 2022-07-12 16:00:40 +03:00
NaiJi added 1 commit 2022-07-12 16:00:41 +03:00
inex requested changes 2022-07-12 17:11:48 +03:00
@ -0,0 +10,4 @@
import 'package:selfprivacy/logic/models/hive/user.dart';
import 'package:selfprivacy/utils/password_generator.dart';
class HetznerApi extends VolumeProviderApi {

extends ServerProviderApi with VolumeProviderApi

extends ServerProviderApi with VolumeProviderApi
NaiJi marked this conversation as resolved
@ -0,0 +65,4 @@
}
@override
RegExp getApiTokenValidation() =>

Должно быть статичным?

Должно быть статичным?
Poster
Collaborator

static функции не могут быть полиморфными, к сожалению

static функции не могут быть полиморфными, к сожалению
NaiJi marked this conversation as resolved
@ -0,0 +247,4 @@
@override
Future<ServerHostingDetails?> createServer({
required final String dnsApiToken,

Причина, по которой передаём:
https://go-acme.github.io/lego/dns/

Нам нужно знать и провайдера, и токен.

Причина, по которой передаём: https://go-acme.github.io/lego/dns/ Нам нужно знать и провайдера, и токен.
@ -0,0 +258,4 @@
return details;
}
details = await createServerByVolume(

createServerWithVolume

createServerWithVolume
NaiJi marked this conversation as resolved
@ -0,0 +5,4 @@
import 'package:selfprivacy/logic/models/json/provider_server_info.dart';
abstract class ProviderApi extends ApiMap {
ProviderApi({this.hasLogger = false, this.isWithToken = true});

ServerProviderApi

ServerProviderApi
NaiJi marked this conversation as resolved
@ -0,0 +1,17 @@
import 'package:selfprivacy/logic/api_maps/rest_maps/providers/provider.dart';
import 'package:selfprivacy/logic/models/hive/server_details.dart';
abstract class VolumeProviderApi extends ProviderApi {

Сделать это mixin

Сделать это mixin
NaiJi marked this conversation as resolved
@ -2,13 +2,13 @@ import 'dart:async';
import 'package:cubit_form/cubit_form.dart';

Rename the file

Rename the file
NaiJi marked this conversation as resolved
@ -52,0 +53,4 @@
RegExp getProviderApiTokenValidation() {
if (repository.providerApiFactory == null) {
print(
"validateProviderApiToken: Factory for API provider doesn't exist!",

Not print, that's an Exception.

Not print, that's an Exception.
NaiJi marked this conversation as resolved
@ -52,0 +64,4 @@
Future<bool> isProviderApiTokenValid(final String providerToken) async {
if (repository.providerApiFactory == null) {
print(
"validateProviderApiToken: Factory for API provider doesn't exist!",

Should be exception

Should be exception
NaiJi marked this conversation as resolved
@ -123,2 +150,4 @@
);
if (dnsRecordsCreated) {
repository.onCreationSuccess(serverDetails, state.serverDomain!);

Discard this.

Discard this.
NaiJi marked this conversation as resolved
@ -328,3 +359,3 @@
return false;
}
await HetznerApi().createReverseDns(

Return this!

Return this!
NaiJi marked this conversation as resolved
@ -135,0 +144,4 @@
ServerHostingDetails? details;
if (providerApiFactory == null) {
print("startServer: Factory for API provider doesn't exist!");

Exception

Exception
NaiJi marked this conversation as resolved
@ -211,2 +229,2 @@
final HetznerApi hetznerApi = HetznerApi();
late ServerVolume dataBase;
if (providerApiFactory == null) {
print("createServer: Factory for API provider doesn't exist!");

Exception

Exception
NaiJi marked this conversation as resolved
@ -281,3 +292,3 @@
}
Future<void> createDnsRecords(
Future<void> onCreationSuccess(

Discard this function.

Discard this function.
NaiJi marked this conversation as resolved
@ -288,2 +314,4 @@
final CloudflareApi cloudflareApi = CloudflareApi();
if (providerApiFactory == null) {
print("createServer: Factory for API provider doesn't exist!");

Exception

Exception
NaiJi marked this conversation as resolved
@ -601,0 +627,4 @@
Future<List<ServerBasicInfo>> getServersOnProviderAccount() async {
if (providerApiFactory == null) {
print(
'getServersOnProviderAccount: '

Exception

Exception
NaiJi marked this conversation as resolved
@ -689,2 +725,3 @@
Future<void> deleteServer(final ServerDomain serverDomain) async {
final HetznerApi hetznerApi = HetznerApi();
if (providerApiFactory == null) {
print("deleteServer: Factory for API provider doesn't exist!");

Exception

Exception
NaiJi marked this conversation as resolved
@ -0,0 +1,115 @@
import 'package:json_annotation/json_annotation.dart';

Revert rename, this is a Hetzner mapping for API.

Revert rename, this is a Hetzner mapping for API.
NaiJi marked this conversation as resolved
NaiJi added 1 commit 2022-07-13 14:58:35 +03:00
inex approved these changes 2022-07-13 21:46:24 +03:00
inex merged commit 8deb240426 into develop 2022-07-13 21:46:35 +03:00
inex deleted branch naiji-dev 2022-07-13 21:46:36 +03:00
Sign in to join this conversation.
No reviewers
No Milestone
No project
No Assignees
2 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: SelfPrivacy/selfprivacy.org.app#99
There is no content yet.