changeset 1350:a32f3f47e4a8

server (restricted_bridge): added `interestsRegisterFileSharing` + filter extra_s in `FISInvite`
author Goffi <goffi@goffi.org>
date Sat, 05 Sep 2020 21:59:20 +0200
parents 886d1856e9de
children 2c3bc7284992
files libervia/server/restricted_bridge.py
diffstat 1 files changed, 25 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/libervia/server/restricted_bridge.py	Sat Sep 05 21:59:17 2020 +0200
+++ b/libervia/server/restricted_bridge.py	Sat Sep 05 21:59:20 2020 +0200
@@ -17,6 +17,7 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 from libervia.server.constants import Const as C
+from sat.tools.common import data_format
 
 
 class RestrictedBridge:
@@ -56,6 +57,22 @@
         return await self.host.bridgeCall(
             "fileSharingDelete", service_jid, path, namespace, profile)
 
+    async def interestsRegisterFileSharing(
+        self, service, repos_type, namespace, path, name, extra_s, profile
+    ):
+        if extra_s:
+            # we only allow "thumb_url" here
+            extra = data_format.deserialise(extra_s)
+            if "thumb_url" in extra:
+                extra_s = data_format.serialise({"thumb_url": extra["thumb_url"]})
+            else:
+                extra_s = ""
+
+        return await self.host.bridgeCall(
+            "interestsRegisterFileSharing", service, repos_type, namespace, path, name,
+            extra_s, profile
+        )
+
     async def interestRetract(
         self, service_jid, item_id, profile
     ):
@@ -66,6 +83,14 @@
         self, invitee_jid_s, service_s, repos_type, namespace, path, name, extra_s,
         profile
     ):
+        if extra_s:
+            # we only allow "thumb_url" here
+            extra = data_format.deserialise(extra_s)
+            if "thumb_url" in extra:
+                extra_s = data_format.serialise({"thumb_url": extra["thumb_url"]})
+            else:
+                extra_s = ""
+
         return await self.host.bridgeCall(
             "FISInvite", invitee_jid_s, service_s, repos_type, namespace, path, name,
             extra_s, profile