diff sat/plugins/plugin_xep_0096.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 849374e59178
children
line wrap: on
line diff
--- a/sat/plugins/plugin_xep_0096.py	Fri Apr 07 15:18:39 2023 +0200
+++ b/sat/plugins/plugin_xep_0096.py	Sat Apr 08 13:54:42 2023 +0200
@@ -64,18 +64,18 @@
         self._f = self.host.plugins["FILE"]
         self._f.register(self)
         self._si = self.host.plugins["XEP-0095"]
-        self._si.registerSIProfile(SI_PROFILE_NAME, self._transferRequest)
-        host.bridge.addMethod(
-            "siSendFile", ".plugin", in_sign="sssss", out_sign="s", method=self._fileSend
+        self._si.register_si_profile(SI_PROFILE_NAME, self._transfer_request)
+        host.bridge.add_method(
+            "si_file_send", ".plugin", in_sign="sssss", out_sign="s", method=self._file_send
         )
 
-    async def canHandleFileSend(self, client, peer_jid, filepath):
+    async def can_handle_file_send(self, client, peer_jid, filepath):
         return await self.host.hasFeature(client, NS_SI_FT, peer_jid)
 
     def unload(self):
-        self._si.unregisterSIProfile(SI_PROFILE_NAME)
+        self._si.unregister_si_profile(SI_PROFILE_NAME)
 
-    def _badRequest(self, client, iq_elt, message=None):
+    def _bad_request(self, client, iq_elt, message=None):
         """Send a bad-request error
 
         @param iq_elt(domish.Element): initial <IQ> element of the SI request
@@ -85,7 +85,7 @@
             log.warning(message)
         self._si.sendError(client, iq_elt, "bad-request")
 
-    def _parseRange(self, parent_elt, file_size):
+    def _parse_range(self, parent_elt, file_size):
         """find and parse <range/> element
 
         @param parent_elt(domish.Element): direct parent of the <range/> element
@@ -118,7 +118,7 @@
 
         return range_, range_offset, range_length
 
-    def _transferRequest(self, client, iq_elt, si_id, si_mime_type, si_elt):
+    def _transfer_request(self, client, iq_elt, si_id, si_mime_type, si_elt):
         """Called when a file transfer is requested
 
         @param iq_elt(domish.Element): initial <IQ> element of the SI request
@@ -132,14 +132,14 @@
         try:
             file_elt = next(si_elt.elements(NS_SI_FT, "file"))
         except StopIteration:
-            return self._badRequest(
+            return self._bad_request(
                 client, iq_elt, "No <file/> element found in SI File Transfer request"
             )
 
         try:
-            feature_elt = self.host.plugins["XEP-0020"].getFeatureElt(si_elt)
+            feature_elt = self.host.plugins["XEP-0020"].get_feature_elt(si_elt)
         except exceptions.NotFound:
-            return self._badRequest(
+            return self._bad_request(
                 client, iq_elt, "No <feature/> element found in SI File Transfer request"
             )
 
@@ -147,7 +147,7 @@
             filename = file_elt["name"]
             file_size = int(file_elt["size"])
         except (KeyError, ValueError):
-            return self._badRequest(client, iq_elt, "Malformed SI File Transfer request")
+            return self._bad_request(client, iq_elt, "Malformed SI File Transfer request")
 
         file_date = file_elt.getAttribute("date")
         file_hash = file_elt.getAttribute("hash")
@@ -164,16 +164,16 @@
             file_desc = ""
 
         try:
-            range_, range_offset, range_length = self._parseRange(file_elt, file_size)
+            range_, range_offset, range_length = self._parse_range(file_elt, file_size)
         except ValueError:
-            return self._badRequest(client, iq_elt, "Malformed SI File Transfer request")
+            return self._bad_request(client, iq_elt, "Malformed SI File Transfer request")
 
         try:
             stream_method = self.host.plugins["XEP-0020"].negotiate(
                 feature_elt, "stream-method", self.managed_stream_m, namespace=None
             )
         except KeyError:
-            return self._badRequest(client, iq_elt, "No stream method found")
+            return self._bad_request(client, iq_elt, "No stream method found")
 
         if stream_method:
             if stream_method == self.host.plugins["XEP-0065"].NAMESPACE:
@@ -207,11 +207,11 @@
         }
 
         d = defer.ensureDeferred(
-            self._f.getDestDir(client, peer_jid, data, data, stream_object=True)
+            self._f.get_dest_dir(client, peer_jid, data, data, stream_object=True)
         )
-        d.addCallback(self.confirmationCb, client, iq_elt, data)
+        d.addCallback(self.confirmation_cb, client, iq_elt, data)
 
-    def confirmationCb(self, accepted, client, iq_elt, data):
+    def confirmation_cb(self, accepted, client, iq_elt, data):
         """Called on confirmation answer
 
         @param accepted(bool): True if file transfer is accepted
@@ -244,14 +244,14 @@
 
         # file_obj = self._getFileObject(dest_path, can_range)
         # range_offset = file_obj.tell()
-        d = data["stream_plugin"].createSession(
+        d = data["stream_plugin"].create_session(
             client, data["stream_object"], client.jid, data["peer_jid"], data["si_id"]
         )
-        d.addCallback(self._transferCb, client, data)
-        d.addErrback(self._transferEb, client, data)
+        d.addCallback(self._transfer_cb, client, data)
+        d.addErrback(self._transfer_eb, client, data)
 
         # we can send the iq result
-        feature_elt = self.host.plugins["XEP-0020"].chooseOption(
+        feature_elt = self.host.plugins["XEP-0020"].choose_option(
             {"stream-method": data["stream_method"]}, namespace=None
         )
         misc_elts = []
@@ -261,9 +261,9 @@
         #     range_elt['offset'] = str(range_offset)
         #     #TODO: manage range length
         #     misc_elts.append(range_elt)
-        self._si.acceptStream(client, iq_elt, feature_elt, misc_elts)
+        self._si.accept_stream(client, iq_elt, feature_elt, misc_elts)
 
-    def _transferCb(self, __, client, data):
+    def _transfer_cb(self, __, client, data):
         """Called by the stream method when transfer successfuly finished
 
         @param data: session data
@@ -272,7 +272,7 @@
         data["stream_object"].close()
         log.info("Transfer {si_id} successfuly finished".format(**data))
 
-    def _transferEb(self, failure, client, data):
+    def _transfer_eb(self, failure, client, data):
         """Called when something went wrong with the transfer
 
         @param id: stream id
@@ -285,13 +285,13 @@
         )
         data["stream_object"].close()
 
-    def _fileSend(self, peer_jid_s, filepath, name, desc, profile=C.PROF_KEY_NONE):
-        client = self.host.getClient(profile)
-        return self.fileSend(
+    def _file_send(self, peer_jid_s, filepath, name, desc, profile=C.PROF_KEY_NONE):
+        client = self.host.get_client(profile)
+        return self.file_send(
             client, jid.JID(peer_jid_s), filepath, name or None, desc or None
         )
 
-    def fileSend(self, client, peer_jid, filepath, name=None, desc=None, extra=None):
+    def file_send(self, client, peer_jid, filepath, name=None, desc=None, extra=None):
         """Send a file using XEP-0096
 
         @param peer_jid(jid.JID): recipient
@@ -302,7 +302,7 @@
         @param extra: not used here
         @return: an unique id to identify the transfer
         """
-        feature_elt = self.host.plugins["XEP-0020"].proposeFeatures(
+        feature_elt = self.host.plugins["XEP-0020"].propose_features(
             {"stream-method": self.managed_stream_m}, namespace=None
         )
 
@@ -320,23 +320,23 @@
 
         file_transfer_elts.append(domish.Element((None, "range")))
 
-        sid, offer_d = self._si.proposeStream(
+        sid, offer_d = self._si.propose_stream(
             client, peer_jid, SI_PROFILE, feature_elt, file_transfer_elts
         )
         args = [filepath, sid, size, client]
-        offer_d.addCallbacks(self._fileCb, self._fileEb, args, None, args)
+        offer_d.addCallbacks(self._file_cb, self._file_eb, args, None, args)
         return sid
 
-    def _fileCb(self, result_tuple, filepath, sid, size, client):
+    def _file_cb(self, result_tuple, filepath, sid, size, client):
         iq_elt, si_elt = result_tuple
 
         try:
-            feature_elt = self.host.plugins["XEP-0020"].getFeatureElt(si_elt)
+            feature_elt = self.host.plugins["XEP-0020"].get_feature_elt(si_elt)
         except exceptions.NotFound:
             log.warning("No <feature/> element found in result while expected")
             return
 
-        choosed_options = self.host.plugins["XEP-0020"].getChoosedOptions(
+        choosed_options = self.host.plugins["XEP-0020"].get_choosed_options(
             feature_elt, namespace=None
         )
         try:
@@ -350,7 +350,7 @@
         except StopIteration:
             pass
         else:
-            range_, range_offset, range_length = self._parseRange(file_elt, size)
+            range_, range_offset, range_length = self._parse_range(file_elt, size)
 
         if stream_method == self.host.plugins["XEP-0065"].NAMESPACE:
             plugin = self.host.plugins["XEP-0065"]
@@ -363,12 +363,12 @@
         stream_object = stream.FileStreamObject(
             self.host, client, filepath, uid=sid, size=size
         )
-        d = plugin.startStream(client, stream_object, client.jid,
+        d = plugin.start_stream(client, stream_object, client.jid,
                                jid.JID(iq_elt["from"]), sid)
-        d.addCallback(self._sendCb, client, sid, stream_object)
-        d.addErrback(self._sendEb, client, sid, stream_object)
+        d.addCallback(self._send_cb, client, sid, stream_object)
+        d.addErrback(self._send_eb, client, sid, stream_object)
 
-    def _fileEb(self, failure, filepath, sid, size, client):
+    def _file_eb(self, failure, filepath, sid, size, client):
         if failure.check(error.StanzaError):
             stanza_err = failure.value
             if stanza_err.code == "403" and stanza_err.condition == "forbidden":
@@ -376,20 +376,20 @@
                 log.info("File transfer refused by {}".format(from_s))
                 msg = D_("The contact {} has refused your file").format(from_s)
                 title = D_("File refused")
-                xml_tools.quickNote(self.host, client, msg, title, C.XMLUI_DATA_LVL_INFO)
+                xml_tools.quick_note(self.host, client, msg, title, C.XMLUI_DATA_LVL_INFO)
             else:
                 log.warning(_("Error during file transfer"))
                 msg = D_(
                     "Something went wrong during the file transfer session initialisation: {reason}"
                 ).format(reason=str(stanza_err))
                 title = D_("File transfer error")
-                xml_tools.quickNote(self.host, client, msg, title, C.XMLUI_DATA_LVL_ERROR)
+                xml_tools.quick_note(self.host, client, msg, title, C.XMLUI_DATA_LVL_ERROR)
         elif failure.check(exceptions.DataError):
             log.warning("Invalid stanza received")
         else:
             log.error("Error while proposing stream: {}".format(failure))
 
-    def _sendCb(self, __, client, sid, stream_object):
+    def _send_cb(self, __, client, sid, stream_object):
         log.info(
             _("transfer {sid} successfuly finished [{profile}]").format(
                 sid=sid, profile=client.profile
@@ -397,7 +397,7 @@
         )
         stream_object.close()
 
-    def _sendEb(self, failure, client, sid, stream_object):
+    def _send_eb(self, failure, client, sid, stream_object):
         log.warning(
             _("transfer {sid} failed [{profile}]: {reason}").format(
                 sid=sid, profile=client.profile, reason=str(failure.value)