diff sat/plugins/plugin_xep_0470.py @ 4037:524856bd7b19

massive refactoring to switch from camelCase to snake_case: historically, Libervia (SàT before) was using camelCase as allowed by PEP8 when using a pre-PEP8 code, to use the same coding style as in Twisted. However, snake_case is more readable and it's better to follow PEP8 best practices, so it has been decided to move on full snake_case. Because Libervia has a huge codebase, this ended with a ugly mix of camelCase and snake_case. To fix that, this patch does a big refactoring by renaming every function and method (including bridge) that are not coming from Twisted or Wokkel, to use fully snake_case. This is a massive change, and may result in some bugs.
author Goffi <goffi@goffi.org>
date Sat, 08 Apr 2023 13:54:42 +0200
parents 722c25818778
children
line wrap: on
line diff
--- a/sat/plugins/plugin_xep_0470.py	Fri Apr 07 15:18:39 2023 +0200
+++ b/sat/plugins/plugin_xep_0470.py	Sat Apr 08 13:54:42 2023 +0200
@@ -30,7 +30,7 @@
 from sat.core.core_types import SatXMPPEntity
 from sat.core import exceptions
 from sat.tools.common import uri, data_format, date_utils
-from sat.tools.utils import asDeferred, xmpp_date
+from sat.tools.utils import as_deferred, xmpp_date
 
 
 log = getLogger(__name__)
@@ -58,27 +58,27 @@
 
     def __init__(self, host):
         log.info(_("XEP-0470 (Pubsub Attachments) plugin initialization"))
-        host.registerNamespace("pubsub-attachments", NS_PUBSUB_ATTACHMENTS)
+        host.register_namespace("pubsub-attachments", NS_PUBSUB_ATTACHMENTS)
         self.host = host
         self._p = host.plugins["XEP-0060"]
         self.handlers: Dict[Tuple[str, str], dict[str, Any]] = {}
-        host.trigger.add("XEP-0277_send", self.onMBSend)
+        host.trigger.add("XEP-0277_send", self.on_mb_send)
         self.register_attachment_handler(
-            "noticed", NS_PUBSUB_ATTACHMENTS, self.noticedGet, self.noticedSet
+            "noticed", NS_PUBSUB_ATTACHMENTS, self.noticed_get, self.noticed_set
         )
         self.register_attachment_handler(
-            "reactions", NS_PUBSUB_ATTACHMENTS, self.reactionsGet, self.reactionsSet
+            "reactions", NS_PUBSUB_ATTACHMENTS, self.reactions_get, self.reactions_set
         )
-        host.bridge.addMethod(
-            "psAttachmentsGet",
+        host.bridge.add_method(
+            "ps_attachments_get",
             ".plugin",
             in_sign="sssasss",
             out_sign="(ss)",
             method=self._get,
             async_=True,
         )
-        host.bridge.addMethod(
-            "psAttachmentsSet",
+        host.bridge.add_method(
+            "ps_attachments_set",
             ".plugin",
             in_sign="ss",
             out_sign="",
@@ -86,7 +86,7 @@
             async_=True,
         )
 
-    def getHandler(self, client):
+    def get_handler(self, client):
         return PubsubAttachments_Handler()
 
     def register_attachment_handler(
@@ -125,9 +125,9 @@
             "set": set_cb
         }
 
-    def getAttachmentNodeName(self, service: jid.JID, node: str, item: str) -> str:
+    def get_attachment_node_name(self, service: jid.JID, node: str, item: str) -> str:
         """Generate name to use for attachment node"""
-        target_item_uri = uri.buildXMPPUri(
+        target_item_uri = uri.build_xmpp_uri(
             "pubsub",
             path=service.userhost(),
             node=node,
@@ -135,17 +135,17 @@
         )
         return f"{NS_PUBSUB_ATTACHMENTS}/{target_item_uri}"
 
-    def isAttachmentNode(self, node: str) -> bool:
+    def is_attachment_node(self, node: str) -> bool:
         """Return True if node name is an attachment node"""
         return node.startswith(f"{NS_PUBSUB_ATTACHMENTS}/")
 
-    def attachmentNode2Item(self, node: str) -> Tuple[jid.JID, str, str]:
+    def attachment_node_2_item(self, node: str) -> Tuple[jid.JID, str, str]:
         """Retrieve service, node and item from attachement node's name"""
-        if not self.isAttachmentNode(node):
+        if not self.is_attachment_node(node):
             raise ValueError("this is not an attachment node!")
         prefix_len = len(f"{NS_PUBSUB_ATTACHMENTS}/")
         item_uri = node[prefix_len:]
-        parsed_uri = uri.parseXMPPUri(item_uri)
+        parsed_uri = uri.parse_xmpp_uri(item_uri)
         if parsed_uri["type"] != "pubsub":
             raise ValueError(f"unexpected URI type, it must be a pubsub URI: {item_uri}")
         try:
@@ -156,7 +156,7 @@
         item = parsed_uri["item"]
         return (service, node, item)
 
-    async def onMBSend(
+    async def on_mb_send(
         self,
         client: SatXMPPEntity,
         service: jid.JID,
@@ -203,16 +203,16 @@
             node_config.fields["pubsub#publish_model"].value = "open"
         except KeyError:
             log.warning("pubsub#publish_model field is missing")
-        attachment_node = self.getAttachmentNodeName(service, node, item_id)
+        attachment_node = self.get_attachment_node_name(service, node, item_id)
         # we use the same options as target node
         try:
-            await self._p.createIfNewNode(
+            await self._p.create_if_new_node(
                 client, service, attachment_node, options=dict(node_config)
             )
         except Exception as e:
             log.warning(f"Can't create attachment node {attachment_node}: {e}")
 
-    def items2attachmentData(
+    def items_2_attachment_data(
         self,
         client: SatXMPPEntity,
         items: List[domish.Element]
@@ -267,11 +267,11 @@
         extra_s: str,
         profile_key: str
     ) -> defer.Deferred:
-        client = self.host.getClient(profile_key)
+        client = self.host.get_client(profile_key)
         extra = data_format.deserialise(extra_s)
         senders = [jid.JID(s) for s in senders_s]
         d = defer.ensureDeferred(
-            self.getAttachments(client, jid.JID(service_s), node, item, senders)
+            self.get_attachments(client, jid.JID(service_s), node, item, senders)
         )
         d.addCallback(
             lambda ret:
@@ -280,7 +280,7 @@
         )
         return d
 
-    async def getAttachments(
+    async def get_attachments(
         self,
         client: SatXMPPEntity,
         service: jid.JID,
@@ -298,21 +298,21 @@
             entities will be retrieved.
             If None, attachments from all entities will be retrieved
         @param extra: extra data, will be used as ``extra`` argument when doing
-        ``getItems`` call.
+        ``get_items`` call.
         @return: A tuple with:
             - the list of attachments data, one item per found sender. The attachments
               data are dict containing attachment, no ``extra`` field is used here
               (contrarily to attachments data used with ``set_attachements``).
-            - metadata returned by the call to ``getItems``
+            - metadata returned by the call to ``get_items``
         """
         if extra is None:
             extra = {}
-        attachment_node = self.getAttachmentNodeName(service, node, item)
+        attachment_node = self.get_attachment_node_name(service, node, item)
         item_ids = [e.userhost() for e in senders] if senders else None
-        items, metadata = await self._p.getItems(
+        items, metadata = await self._p.get_items(
             client, service, attachment_node, item_ids=item_ids, extra=extra
         )
-        list_data = self.items2attachmentData(client, items)
+        list_data = self.items_2_attachment_data(client, items)
 
         return list_data, metadata
 
@@ -321,7 +321,7 @@
         attachments_s: str,
         profile_key: str
     ) -> None:
-        client = self.host.getClient(profile_key)
+        client = self.host.get_client(profile_key)
         attachments = data_format.deserialise(attachments_s)  or {}
         return defer.ensureDeferred(self.set_attachements(client, attachments))
 
@@ -378,7 +378,7 @@
                 former_elt = next(attachments_elt.elements(namespace, name))
             except StopIteration:
                 former_elt = None
-            new_elt = await asDeferred(
+            new_elt = await as_deferred(
                 handler["set"], client, attachments_data, former_elt
             )
             if new_elt != former_elt:
@@ -417,9 +417,9 @@
             raise ValueError(
                 'data must have "service", "node" and "id" set'
             )
-        attachment_node = self.getAttachmentNodeName(service, node, item)
+        attachment_node = self.get_attachment_node_name(service, node, item)
         try:
-            items, __ = await self._p.getItems(
+            items, __ = await self._p.get_items(
                 client, service, attachment_node, item_ids=[client.jid.userhost()]
             )
         except exceptions.NotFound:
@@ -437,7 +437,7 @@
         )
 
         try:
-            await self._p.sendItems(client, service, attachment_node, [item_elt])
+            await self._p.send_items(client, service, attachment_node, [item_elt])
         except error.StanzaError as e:
             if e.condition == "item-not-found":
                 # the node doesn't exist, we can't publish attachments
@@ -462,11 +462,11 @@
         @param node: node of target item (used to get attachment node's name)
         @param item: name of target item (used to get attachment node's name)
         """
-        attachment_node = self.getAttachmentNodeName(service, node, item)
+        attachment_node = self.get_attachment_node_name(service, node, item)
         await self._p.subscribe(client, service, attachment_node)
 
 
-    def setTimestamp(self, attachment_elt: domish.Element, data: dict) -> None:
+    def set_timestamp(self, attachment_elt: domish.Element, data: dict) -> None:
         """Check if a ``timestamp`` attribute is set, parse it, and fill data
 
         @param attachments_elt: element where the ``timestamp`` attribute may be set
@@ -482,7 +482,7 @@
             else:
                 data["timestamp"] = timestamp
 
-    def noticedGet(
+    def noticed_get(
         self,
         client: SatXMPPEntity,
         attachments_elt: domish.Element,
@@ -498,10 +498,10 @@
             noticed_data = {
                 "noticed": True
             }
-            self.setTimestamp(noticed_elt, noticed_data)
+            self.set_timestamp(noticed_elt, noticed_data)
             data["noticed"] = noticed_data
 
-    def noticedSet(
+    def noticed_set(
         self,
         client: SatXMPPEntity,
         data: Dict[str, Any],
@@ -525,7 +525,7 @@
         else:
             return None
 
-    def reactionsGet(
+    def reactions_get(
         self,
         client: SatXMPPEntity,
         attachments_elt: domish.Element,
@@ -542,10 +542,10 @@
             reactions = reactions_data["reactions"]
             for reaction_elt in reactions_elt.elements(NS_PUBSUB_ATTACHMENTS, "reaction"):
                 reactions.append(str(reaction_elt))
-            self.setTimestamp(reactions_elt, reactions_data)
+            self.set_timestamp(reactions_elt, reactions_data)
             data["reactions"] = reactions_data
 
-    def reactionsSet(
+    def reactions_set(
         self,
         client: SatXMPPEntity,
         data: Dict[str, Any],