Skip to content

Commit a528741

Browse files
committed
feature: refactors the current generic apptype structure and applies dependency inversion to the client
1 parent 8af8442 commit a528741

File tree

19 files changed

+231
-207
lines changed

19 files changed

+231
-207
lines changed

.coveragerc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ omit =
1010
marketplace/connect/*
1111
marketplace/wpp_templates/requests.py
1212
*urls.py*
13+
marketplace/interfaces/*
1314

1415
[report]
1516
fail_under = 70

marketplace/connect/client.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
from django.conf import settings
44

55
from rest_framework.exceptions import ValidationError
6+
from marketplace.interfaces.connect import ConnectInterface
67

78

89
class ConnectAuth:
@@ -22,7 +23,9 @@ def auth_header(self) -> dict:
2223
return {"Authorization": self.__get_auth_token()}
2324

2425

25-
class ConnectProjectClient(ConnectAuth): # TODO: change class name to FlowsRESTClient
26+
class ConnectProjectClient(
27+
ConnectAuth, ConnectInterface
28+
): # TODO: change class name to FlowsRESTClient
2629
base_url = settings.FLOWS_REST_ENDPOINT
2730
use_connect_v2 = settings.USE_CONNECT_V2
2831

marketplace/core/serializers.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
if TYPE_CHECKING:
77
from marketplace.core.types.base import AppType # pragma: no cover
88

9+
910
User = get_user_model()
1011

1112

marketplace/core/types/channels/generic/views.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,6 @@
1111

1212
from marketplace.applications.models import AppTypeAsset
1313

14-
from . import type as type_
15-
1614
from django.conf import settings
1715

1816
IMPORTANCE_CHANNELS_ORDER = settings.IMPORTANCE_CHANNELS_ORDER

marketplace/core/types/channels/instagram/serializers.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -57,9 +57,7 @@ def _create_channel(self, attrs: dict, app: App) -> str:
5757
"page_name": attrs.get("page_name"),
5858
"page_id": attrs.get("page_id"),
5959
}
60-
response = client.create_channel(
61-
user.email, app.project_uuid, payload, app.flows_type_code
62-
)
60+
response = client.create_channel(user.email, app.project_uuid, payload, app.flows_type_code)
6361

6462
return response
6563

marketplace/core/types/channels/telegram/serializers.py

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -44,10 +44,7 @@ def _create_channel(self, attrs: dict, app: App) -> str:
4444
user = self.context.get("request").user
4545
client = ConnectProjectClient()
4646
return client.create_channel(
47-
user.email,
48-
app.project_uuid,
49-
{"auth_token": attrs.get("token")},
50-
app.flows_type_code,
47+
user.email, app.project_uuid, {"auth_token": attrs.get("token")}, app.flows_type_code
5148
)
5249

5350

marketplace/core/types/channels/weni_web_chat/serializers.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -118,9 +118,7 @@ def _create_channel(self) -> str:
118118
data = {"name": name, "base_url": settings.SOCKET_BASE_URL}
119119

120120
client = ConnectProjectClient()
121-
return client.create_channel(
122-
user.email, self.app.project_uuid, data, self.app.flows_type_code
123-
)
121+
return client.create_channel(user.email, self.app.project_uuid, data, self.app.flows_type_code)
124122

125123
def generate_script(self, attrs):
126124
"""

marketplace/core/types/channels/whatsapp_demo/views.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,7 @@ def perform_create(self, serializer):
2727
)
2828

2929
client = ConnectProjectClient()
30-
result = client.create_channel(
31-
user.email, str(instance.project_uuid), data, instance.flows_type_code
32-
)
30+
result = client.create_channel(user.email, str(instance.project_uuid), data, instance.flows_type_code)
3331

3432
instance.config["title"] = result.get("name")
3533
instance.config["channelUuid"] = result.get("uuid")

marketplace/core/types/externals/base.py

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,3 @@
55
class ExternalAppType(AppType):
66
platform = App.PLATFORM_WENI_FLOWS
77
category = AppType.CATEGORY_EXTERNAL
8-
9-
# TODO: uncomment this method
10-
# @abstractproperty
11-
# def flows_type_code(self) -> str:
12-
# pass

marketplace/core/types/externals/generic/serializers.py

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,7 @@ class Meta:
2121
read_only_fields = ("code", "uuid", "platform")
2222

2323
def create(self, validated_data):
24-
# TODO: Send the responsibility of this method to the AppTypeBaseSerializer and create an object from the type
25-
from .type import GenericType
26-
27-
validated_data["platform"] = GenericType.platform
24+
validated_data["platform"] = self.type_class.platform
2825
return super().create(validated_data)
2926

3027

@@ -52,11 +49,11 @@ def validate(self, attrs: dict):
5249
def _create_channel(self, attrs: dict, app: App) -> str:
5350
request = self.context.get("request")
5451
user = request.user
55-
flows_type_code = app.config.get("flows_type_code")
56-
client = ConnectProjectClient()
57-
return client.create_external_service(
58-
user.email, app.project_uuid, attrs, flows_type_code
52+
external_code = app.config.get("external_code")
53+
response = app.apptype.create(
54+
ConnectProjectClient(), user.email, app.project_uuid, attrs, external_code
5955
)
56+
return response
6057

6158

6259
class GenericConfigureSerializer(AppTypeBaseSerializer):

0 commit comments

Comments
 (0)