Mercurial > libervia-backend
diff sat/plugins/plugin_xep_0047.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 | be6d91572633 |
children |
line wrap: on
line diff
--- a/sat/plugins/plugin_xep_0047.py Fri Apr 07 15:18:39 2023 +0200 +++ b/sat/plugins/plugin_xep_0047.py Sat Apr 08 13:54:42 2023 +0200 @@ -71,13 +71,13 @@ log.info(_("In-Band Bytestreams plugin initialization")) self.host = host - def getHandler(self, client): + def get_handler(self, client): return XEP_0047_handler(self) - def profileConnected(self, client): + def profile_connected(self, client): client.xep_0047_current_stream = {} # key: stream_id, value: data(dict) - def _timeOut(self, sid, client): + def _time_out(self, sid, client): """Delete current_stream id, called after timeout @param sid(unicode): session id of client.xep_0047_current_stream @@ -88,9 +88,9 @@ sid=sid, profile=client.profile ) ) - self._killSession(sid, client, "TIMEOUT") + self._kill_session(sid, client, "TIMEOUT") - def _killSession(self, sid, client, failure_reason=None): + def _kill_session(self, sid, client, failure_reason=None): """Delete a current_stream id, clean up associated observers @param sid(unicode): session id @@ -124,18 +124,18 @@ else: stream_d.errback(failure.Failure(exceptions.DataError(failure_reason))) - def createSession(self, *args, **kwargs): - """like [_createSession] but return the session deferred instead of the whole session + def create_session(self, *args, **kwargs): + """like [_create_session] but return the session deferred instead of the whole session session deferred is fired when transfer is finished """ - return self._createSession(*args, **kwargs)[DEFER_KEY] + return self._create_session(*args, **kwargs)[DEFER_KEY] - def _createSession(self, client, stream_object, local_jid, to_jid, sid): + def _create_session(self, client, stream_object, local_jid, to_jid, sid): """Called when a bytestream is imminent @param stream_object(IConsumer): stream object where data will be written - @param local_jid(jid.JID): same as [startStream] + @param local_jid(jid.JID): same as [start_stream] @param to_jid(jid.JId): jid of the other peer @param sid(unicode): session id @return (dict): session data @@ -149,12 +149,12 @@ "to": to_jid, "stream_object": stream_object, "seq": -1, - "timer": reactor.callLater(TIMEOUT, self._timeOut, sid, client), + "timer": reactor.callLater(TIMEOUT, self._time_out, sid, client), } return session_data - def _onIBBOpen(self, iq_elt, client): + def _on_ibb_open(self, iq_elt, client): """"Called when an IBB <open> element is received @param iq_elt(domish.Element): the whole <iq> stanza @@ -186,18 +186,18 @@ session_data["event_data"] = event_data = ( IBB_MESSAGE_DATA if stanza == "message" else IBB_IQ_DATA ).format(sid) - session_data["observer_cb"] = observer_cb = self._onIBBData + session_data["observer_cb"] = observer_cb = self._on_ibb_data event_close = IBB_CLOSE.format(sid) # we now set the stream observer to look after data packet # FIXME: if we never get the events, the observers stay. # would be better to have generic observer and check id once triggered client.xmlstream.addObserver(event_data, observer_cb, client=client) - client.xmlstream.addOnetimeObserver(event_close, self._onIBBClose, client=client) + client.xmlstream.addOnetimeObserver(event_close, self._on_ibb_close, client=client) # finally, we send the accept stanza iq_result_elt = xmlstream.toResponse(iq_elt, "result") client.send(iq_result_elt) - def _onIBBClose(self, iq_elt, client): + def _on_ibb_close(self, iq_elt, client): """"Called when an IBB <close> element is received @param iq_elt(domish.Element): the whole <iq> stanza @@ -210,9 +210,9 @@ iq_result_elt = xmlstream.toResponse(iq_elt, "result") client.send(iq_result_elt) - self._killSession(sid, client) + self._kill_session(sid, client) - def _onIBBData(self, element, client): + def _on_ibb_data(self, element, client): """Observer called on <iq> or <message> stanzas with data element Manage the data elelement (check validity and write to the stream_object) @@ -247,7 +247,7 @@ if element.name == "iq": reason = "not-acceptable" self._sendError(reason, sid, element, client) - self.terminateStream(session_data, client, reason) + self.terminate_stream(session_data, client, reason) return # we reset the timeout: @@ -261,7 +261,7 @@ log.warning(_("Invalid base64 data")) if element.name == "iq": self._sendError("not-acceptable", sid, element, client) - self.terminateStream(session_data, client, reason) + self.terminate_stream(session_data, client, reason) return # we can now ack success @@ -284,10 +284,10 @@ ) ) if sid is not None: - self._killSession(sid, client, error_condition) + self._kill_session(sid, client, error_condition) client.send(iq_elt) - def startStream(self, client, stream_object, local_jid, to_jid, sid, block_size=None): + def start_stream(self, client, stream_object, local_jid, to_jid, sid, block_size=None): """Launch the stream workflow @param stream_object(ifaces.IStreamProducer): stream object to send @@ -299,7 +299,7 @@ @param sid(unicode): Stream session id @param block_size(int, None): size of the block (or None for default) """ - session_data = self._createSession(client, stream_object, local_jid, to_jid, sid) + session_data = self._create_session(client, stream_object, local_jid, to_jid, sid) if block_size is None: block_size = XEP_0047.BLOCK_SIZE @@ -315,10 +315,10 @@ open_elt["stanza"] = "iq" # TODO: manage <message> stanza ? args = [session_data, client] d = iq_elt.send() - d.addCallbacks(self._IQDataStreamCb, self._IQDataStreamEb, args, None, args) + d.addCallbacks(self._iq_data_stream_cb, self._iq_data_stream_eb, args, None, args) return session_data[DEFER_KEY] - def _IQDataStreamCb(self, iq_elt, session_data, client): + def _iq_data_stream_cb(self, iq_elt, session_data, client): """Called during the whole data streaming @param iq_elt(domish.Element): iq result @@ -340,18 +340,18 @@ data_elt.addContent(base64.b64encode(buffer_).decode()) args = [session_data, client] d = next_iq_elt.send() - d.addCallbacks(self._IQDataStreamCb, self._IQDataStreamEb, args, None, args) + d.addCallbacks(self._iq_data_stream_cb, self._iq_data_stream_eb, args, None, args) else: - self.terminateStream(session_data, client) + self.terminate_stream(session_data, client) - def _IQDataStreamEb(self, failure, session_data, client): + def _iq_data_stream_eb(self, failure, session_data, client): if failure.check(error.StanzaError): log.warning("IBB transfer failed: {}".format(failure.value)) else: log.error("IBB transfer failed: {}".format(failure.value)) - self.terminateStream(session_data, client, "IQ_ERROR") + self.terminate_stream(session_data, client, "IQ_ERROR") - def terminateStream(self, session_data, client, failure_reason=None): + def terminate_stream(self, session_data, client, failure_reason=None): """Terminate the stream session @param session_data(dict): data of this streaming session @@ -364,7 +364,7 @@ close_elt = iq_elt.addElement((NS_IBB, "close")) close_elt["sid"] = session_data["id"] iq_elt.send() - self._killSession(session_data["id"], client, failure_reason) + self._kill_session(session_data["id"], client, failure_reason) @implementer(iwokkel.IDisco) @@ -375,7 +375,7 @@ def connectionInitialized(self): self.xmlstream.addObserver( - IBB_OPEN, self.plugin_parent._onIBBOpen, client=self.parent + IBB_OPEN, self.plugin_parent._on_ibb_open, client=self.parent ) def getDiscoInfo(self, requestor, target, nodeIdentifier=""):