From 63865720be9e8d2bbef22262a7195be89d887954 Mon Sep 17 00:00:00 2001
From: Maxim Podosochnyy <podosochnyy@perx.ru>
Date: Thu, 29 Jun 2023 17:31:49 +0700
Subject: [PATCH] =?UTF-8?q?=D0=A3=D0=B4=D0=B0=D0=BB=D0=B5=D0=BD=20=D0=BB?=
 =?UTF-8?q?=D0=B8=D1=88=D0=BD=D0=B8=D0=B9=20=D0=BA=D0=BE=D0=B4,=20=D0=B8?=
 =?UTF-8?q?=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D0=B0=20=D0=BE?=
 =?UTF-8?q?=D1=88=D0=B8=D0=B1=D0=BA=D0=B0=20=D0=B2=20=D0=BC=D0=B5=D1=82?=
 =?UTF-8?q?=D0=BE=D0=B4=D0=B5=20update?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 examples/extension_service/Dockerfile         |   2 +-
 .../constants/collections.py                  |   1 +
 examples/extension_service/helpers.py         | 114 ------------------
 examples/extension_service/server.py          |   2 +-
 examples/extension_service/servicer.py        |   4 +-
 perxis/extensions/extension_setup.py          |   2 +-
 6 files changed, 6 insertions(+), 119 deletions(-)
 delete mode 100644 examples/extension_service/helpers.py

diff --git a/examples/extension_service/Dockerfile b/examples/extension_service/Dockerfile
index 86eeb56..dd375dc 100644
--- a/examples/extension_service/Dockerfile
+++ b/examples/extension_service/Dockerfile
@@ -11,7 +11,7 @@ ARG PIP_EXTRA_INDEX_URL=${PIP_EXTRA_INDEX_URL}
 ENV PIP_EXTRA_INDEX_URL=$PIP_EXTRA_INDEX_URL
 
 COPY . /home/${USER}/app
-RUN pip install perxis==0.0.14
+RUN pip install perxis==0.0.15
 
 ENV PYTHONPATH="/home/perx/app"
 ENV PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION=python
diff --git a/examples/extension_service/constants/collections.py b/examples/extension_service/constants/collections.py
index ef5a4a0..23e438f 100644
--- a/examples/extension_service/constants/collections.py
+++ b/examples/extension_service/constants/collections.py
@@ -1,3 +1,4 @@
 schemes_mapping = {
     "test_collection": "Тестовая коллекция",
+    "another_test_collection": "Ещё Тестовая коллекция",
 }
diff --git a/examples/extension_service/helpers.py b/examples/extension_service/helpers.py
deleted file mode 100644
index 849c587..0000000
--- a/examples/extension_service/helpers.py
+++ /dev/null
@@ -1,114 +0,0 @@
-# TODO: убрать дублирование кода. На момент написания сервиса ещё не было версии пакета с perxis-python в которую входил
-# TODO: бы написанный ниже код. Удалить после того как станет не нужно
-
-import grpc
-import collections
-
-from typing import Optional
-
-from perxis.collections import collections_pb2
-from perxis.extensions import manager_pb2
-
-
-def make_descriptor(
-        extension_id: str, name: str, description: str,
-        version: str, version_description: str, host: str,
-        dependencies: Optional[list[str]] = None
-) -> manager_pb2.ExtensionDescriptor:
-    if dependencies is None:
-        dependencies = []
-
-    return manager_pb2.ExtensionDescriptor(
-        extension=extension_id,
-        title=name,
-        description=description,
-        version=version,
-        version_description=version_description,
-        deps=dependencies,
-        url=host
-    )
-
-
-def make_collection_instances(schemes_dir: str, schemes_mapping: dict[str, str]) -> list[collections_pb2.Collection]:
-    collections = []
-
-    for collection_id, collection_name in schemes_mapping.items():
-        with open(f"{schemes_dir}/{collection_id}.json", "r") as file:
-            collection_schema = file.read()
-
-        collection = collections_pb2.Collection(
-            id=collection_id,
-            name=collection_name,
-            schema=collection_schema
-        )
-
-        collections.append(collection)
-
-    return collections
-
-
-class _GenericClientInterceptor(grpc.UnaryUnaryClientInterceptor,
-                                grpc.UnaryStreamClientInterceptor,
-                                grpc.StreamUnaryClientInterceptor,
-                                grpc.StreamStreamClientInterceptor):
-
-    def __init__(self, interceptor_function):
-        self._fn = interceptor_function
-
-    def intercept_unary_unary(self, continuation, client_call_details, request):
-        new_details, new_request_iterator, postprocess = self._fn(
-            client_call_details, iter((request,)), False, False)
-        response = continuation(new_details, next(new_request_iterator))
-        return postprocess(response) if postprocess else response
-
-    def intercept_unary_stream(self, continuation, client_call_details,
-                               request):
-        new_details, new_request_iterator, postprocess = self._fn(
-            client_call_details, iter((request,)), False, True)
-        response_it = continuation(new_details, next(new_request_iterator))
-        return postprocess(response_it) if postprocess else response_it
-
-    def intercept_stream_unary(self, continuation, client_call_details,
-                               request_iterator):
-        new_details, new_request_iterator, postprocess = self._fn(
-            client_call_details, request_iterator, True, False)
-        response = continuation(new_details, new_request_iterator)
-        return postprocess(response) if postprocess else response
-
-    def intercept_stream_stream(self, continuation, client_call_details,
-                                request_iterator):
-        new_details, new_request_iterator, postprocess = self._fn(
-            client_call_details, request_iterator, True, True)
-        response_it = continuation(new_details, new_request_iterator)
-        return postprocess(response_it) if postprocess else response_it
-
-
-def create(intercept_call):
-    return _GenericClientInterceptor(intercept_call)
-
-
-class _ClientCallDetails(
-        collections.namedtuple(
-            '_ClientCallDetails',
-            ('method', 'timeout', 'metadata', 'credentials')),
-        grpc.ClientCallDetails):
-    pass
-
-
-def header_adder_interceptor(header, value):
-    def intercept_call(client_call_details, request_iterator, request_streaming,
-                       response_streaming):
-        metadata = []
-        if client_call_details.metadata is not None:
-            metadata = list(client_call_details.metadata)
-        metadata.append((
-            header,
-            value,
-        ))
-
-        client_call_details = _ClientCallDetails(
-            client_call_details.method, client_call_details.timeout, metadata,
-            client_call_details.credentials)
-        return client_call_details, request_iterator, None
-
-    return create(intercept_call)
\ No newline at end of file
diff --git a/examples/extension_service/server.py b/examples/extension_service/server.py
index e3c45ff..a4fb49c 100644
--- a/examples/extension_service/server.py
+++ b/examples/extension_service/server.py
@@ -6,9 +6,9 @@ from perxis.environments import environments_pb2_grpc
 from perxis.roles import roles_pb2_grpc
 from perxis.clients import clients_pb2_grpc
 from perxis.extensions import extension_pb2_grpc, manager_pb2_grpc, manager_pb2
+from perxis.interceptors import header_adder_interceptor
 
 from servicer import Servicer
-from helpers import header_adder_interceptor
 from constants.extension import get_extension_descriptor
 
 
diff --git a/examples/extension_service/servicer.py b/examples/extension_service/servicer.py
index 82ec915..12a8455 100644
--- a/examples/extension_service/servicer.py
+++ b/examples/extension_service/servicer.py
@@ -1,9 +1,9 @@
 from constants import extension
-from helpers import make_collection_instances
 from constants import collections
 
 
 from perxis.extensions.extension_service import ExtensionService
+from perxis.collections import helpers as collections_helpers
 from perxis.roles import roles_pb2
 from perxis.common import common_pb2
 from perxis.clients import clients_pb2
@@ -11,7 +11,7 @@ from perxis.clients import clients_pb2
 
 class Servicer(ExtensionService):
     extension_id = extension.ID
-    collections = make_collection_instances("./schemes", collections.schemes_mapping)
+    collections = collections_helpers.make_collection_instances("./schemes", collections.schemes_mapping)
     roles = [
         roles_pb2.Role(
             id="demo-role",
diff --git a/perxis/extensions/extension_setup.py b/perxis/extensions/extension_setup.py
index 2445a38..6f42a62 100644
--- a/perxis/extensions/extension_setup.py
+++ b/perxis/extensions/extension_setup.py
@@ -284,7 +284,7 @@ class ExtensionSetup:
                         collections_pb2.CreateRequest(collection=cloned_collection)
                     )
 
-                    collection = create_response.collection
+                    collection = create_response.created
                 except grpc.RpcError as e:
                     errors_list.append(f"Не удалось создать коллекцию {local_collection.id}, {e.details()}")
 
-- 
GitLab