diff sat/plugins/plugin_xep_0054.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 213e83a4ed10
children
line wrap: on
line diff
--- a/sat/plugins/plugin_xep_0054.py	Fri Apr 07 15:18:39 2023 +0200
+++ b/sat/plugins/plugin_xep_0054.py	Sat Apr 08 13:54:42 2023 +0200
@@ -79,14 +79,14 @@
         log.info(_("Plugin XEP_0054 initialization"))
         self.host = host
         self._i = host.plugins['IDENTITY']
-        self._i.register(IMPORT_NAME, 'avatar', self.getAvatar, self.setAvatar)
-        self._i.register(IMPORT_NAME, 'nicknames', self.getNicknames, self.setNicknames)
-        host.trigger.add("presence_available", self.presenceAvailableTrigger)
+        self._i.register(IMPORT_NAME, 'avatar', self.get_avatar, self.set_avatar)
+        self._i.register(IMPORT_NAME, 'nicknames', self.get_nicknames, self.set_nicknames)
+        host.trigger.add("presence_available", self.presence_available_trigger)
 
-    def getHandler(self, client):
+    def get_handler(self, client):
         return XEP_0054_handler(self)
 
-    def presenceAvailableTrigger(self, presence_elt, client):
+    def presence_available_trigger(self, presence_elt, client):
         try:
             avatar_hash = client._xep_0054_avatar_hashes[client.jid.userhost()]
         except KeyError:
@@ -99,12 +99,12 @@
         presence_elt.addChild(x_elt)
         return True
 
-    async def profileConnecting(self, client):
+    async def profile_connecting(self, client):
         client._xep_0054_avatar_hashes = persistent.PersistentDict(
             NS_VCARD, client.profile)
         await client._xep_0054_avatar_hashes.load()
 
-    def savePhoto(self, client, photo_elt, entity):
+    def save_photo(self, client, photo_elt, entity):
         """Parse a <PHOTO> photo_elt and save the picture"""
         # XXX: this method is launched in a separate thread
         try:
@@ -149,7 +149,7 @@
                 raise Failure(exceptions.DataError(msg))
 
         image_hash = sha1(decoded).hexdigest()
-        with self.host.common_cache.cacheData(
+        with self.host.common_cache.cache_data(
             PLUGIN_INFO["import_name"],
             image_hash,
             mime_type,
@@ -157,7 +157,7 @@
             f.write(decoded)
         return image_hash
 
-    async def vCard2Dict(self, client, vcard_elt, entity_jid):
+    async def v_card_2_dict(self, client, vcard_elt, entity_jid):
         """Convert a VCard_elt to a dict, and save binaries"""
         log.debug(("parsing vcard_elt"))
         vcard_dict = {}
@@ -184,7 +184,7 @@
                 # TODO: handle EXTVAL
                 try:
                     avatar_hash = await threads.deferToThread(
-                        self.savePhoto, client, elem, entity_jid
+                        self.save_photo, client, elem, entity_jid
                     )
                 except (exceptions.DataError, exceptions.NotFound):
                     avatar_hash = ""
@@ -199,7 +199,7 @@
                         entity_jid.full(), avatar_hash)
 
                     if avatar_hash:
-                        avatar_cache = self.host.common_cache.getMetadata(avatar_hash)
+                        avatar_cache = self.host.common_cache.get_metadata(avatar_hash)
                         await self._i.update(
                             client,
                             IMPORT_NAME,
@@ -220,7 +220,7 @@
 
         return vcard_dict
 
-    async def getVCardElement(self, client, entity_jid):
+    async def get_vcard_element(self, client, entity_jid):
         """Retrieve domish.Element of a VCard
 
         @param entity_jid(jid.JID): entity from who we need the vCard
@@ -239,14 +239,14 @@
                 ).format(entity_jid=entity_jid, xml=iq_ret_elt.toXml()))
             raise exceptions.DataError(f"no vCard element found for {entity_jid}")
 
-    async def updateVCardElt(self, client, entity_jid, to_replace):
+    async def update_vcard_elt(self, client, entity_jid, to_replace):
         """Create a vcard element to replace some metadata
 
         @param to_replace(list[str]): list of vcard element names to remove
         """
         try:
             # we first check if a vcard already exists, to keep data
-            vcard_elt = await self.getVCardElement(client, entity_jid)
+            vcard_elt = await self.get_vcard_element(client, entity_jid)
         except error.StanzaError as e:
             if e.condition == "item-not-found":
                 vcard_elt = domish.Element((NS_VCARD, "vCard"))
@@ -266,16 +266,16 @@
 
         return vcard_elt
 
-    async def getCard(self, client, entity_jid):
+    async def get_card(self, client, entity_jid):
         """Ask server for VCard
 
         @param entity_jid(jid.JID): jid from which we want the VCard
         @result(dict): vCard data
         """
-        entity_jid = self._i.getIdentityJid(client, entity_jid)
+        entity_jid = self._i.get_identity_jid(client, entity_jid)
         log.debug(f"Asking for {entity_jid}'s VCard")
         try:
-            vcard_elt = await self.getVCardElement(client, entity_jid)
+            vcard_elt = await self.get_vcard_element(client, entity_jid)
         except exceptions.DataError:
             self._i.update(client, IMPORT_NAME, "avatar", None, entity_jid)
         except Exception as e:
@@ -284,9 +284,9 @@
                 ).format(entity_jid=entity_jid, e=e))
         else:
             log.debug(_("VCard found"))
-            return await self.vCard2Dict(client, vcard_elt, entity_jid)
+            return await self.v_card_2_dict(client, vcard_elt, entity_jid)
 
-    async def getAvatar(
+    async def get_avatar(
             self,
             client: SatXMPPEntity,
             entity_jid: jid.JID
@@ -296,9 +296,9 @@
         @param entity: entity to get avatar from
         @return: avatar metadata, or None if no avatar has been found
         """
-        entity_jid = self._i.getIdentityJid(client, entity_jid)
+        entity_jid = self._i.get_identity_jid(client, entity_jid)
         hashes_cache = client._xep_0054_avatar_hashes
-        vcard = await self.getCard(client, entity_jid)
+        vcard = await self.get_card(client, entity_jid)
         if vcard is None:
             return None
         try:
@@ -312,18 +312,18 @@
         if not avatar_hash:
             return None
 
-        avatar_cache = self.host.common_cache.getMetadata(avatar_hash)
-        return self._i.avatarBuildMetadata(
+        avatar_cache = self.host.common_cache.get_metadata(avatar_hash)
+        return self._i.avatar_build_metadata(
                 avatar_cache['path'], avatar_cache['mime_type'], avatar_hash)
 
-    async def setAvatar(self, client, avatar_data, entity):
+    async def set_avatar(self, client, avatar_data, entity):
         """Set avatar of the profile
 
         @param avatar_data(dict): data of the image to use as avatar, as built by
             IDENTITY plugin.
         @param entity(jid.JID): entity whose avatar must be changed
         """
-        vcard_elt = await self.updateVCardElt(client, entity, ['PHOTO'])
+        vcard_elt = await self.update_vcard_elt(client, entity, ['PHOTO'])
 
         iq_elt = client.IQ()
         iq_elt.addChild(vcard_elt)
@@ -337,19 +337,19 @@
         # FIXME: should send the current presence, not always "available" !
         await client.presence.available()
 
-    async def getNicknames(self, client, entity):
+    async def get_nicknames(self, client, entity):
         """get nick from cache, or check vCard
 
         @param entity(jid.JID): entity to get nick from
         @return(list[str]): nicknames found
         """
-        vcard_data = await self.getCard(client, entity)
+        vcard_data = await self.get_card(client, entity)
         try:
             return [vcard_data['nickname']]
         except (KeyError, TypeError):
             return []
 
-    async def setNicknames(self, client, nicknames, entity):
+    async def set_nicknames(self, client, nicknames, entity):
         """Update our vCard and set a nickname
 
         @param nicknames(list[str]): new nicknames to use
@@ -357,7 +357,7 @@
         """
         nick = nicknames[0].strip()
 
-        vcard_elt = await self.updateVCardElt(client, entity, ['NICKNAME'])
+        vcard_elt = await self.update_vcard_elt(client, entity, ['NICKNAME'])
 
         if nick:
             vcard_elt.addElement((NS_VCARD, "NICKNAME"), content=nick)
@@ -389,7 +389,7 @@
         @param presence(domish.Element): <presence/> stanza
         """
         client = self.parent
-        entity_jid = self.plugin_parent._i.getIdentityJid(
+        entity_jid = self.plugin_parent._i.get_identity_jid(
             client, jid.JID(presence["from"]))
 
         try:
@@ -414,14 +414,14 @@
             # no change, we can return…
             if given_hash:
                 # …but we double check that avatar is in cache
-                avatar_cache = self.host.common_cache.getMetadata(given_hash)
+                avatar_cache = self.host.common_cache.get_metadata(given_hash)
                 if avatar_cache is None:
                     log.debug(
                         f"Avatar for [{entity_jid}] is known but not in cache, we get "
                         f"it"
                     )
-                    # getCard will put the avatar in cache
-                    await self.plugin_parent.getCard(client, entity_jid)
+                    # get_card will put the avatar in cache
+                    await self.plugin_parent.get_card(client, entity_jid)
                 else:
                     log.debug(f"avatar for {entity_jid} is already in cache")
             return
@@ -438,7 +438,7 @@
             # the avatar has been removed, no need to go further
             return
 
-        avatar_cache = self.host.common_cache.getMetadata(given_hash)
+        avatar_cache = self.host.common_cache.get_metadata(given_hash)
         if avatar_cache is not None:
             log.debug(
                 f"New avatar found for [{entity_jid}], it's already in cache, we use it"
@@ -458,7 +458,7 @@
             log.debug(
                 "New avatar found for [{entity_jid}], requesting vcard"
             )
-            vcard = await self.plugin_parent.getCard(client, entity_jid)
+            vcard = await self.plugin_parent.get_card(client, entity_jid)
             if vcard is None:
                 log.warning(f"Unexpected empty vCard for {entity_jid}")
                 return