# HG changeset patch # User Goffi # Date 1685478235 -7200 # Node ID e75827204fe0e9bab95ac9a54ff74a31d5091d20 # Parent 34c8e7e4fa524733bde12e0144951c6af6644447 plugin XEP-0092: use `client` instead of `profile_key` in `version_get` diff -r 34c8e7e4fa52 -r e75827204fe0 sat/plugins/plugin_xep_0092.py --- a/sat/plugins/plugin_xep_0092.py Tue May 30 22:23:37 2023 +0200 +++ b/sat/plugins/plugin_xep_0092.py Tue May 30 22:23:55 2023 +0200 @@ -17,12 +17,16 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . -from sat.core.i18n import _ -from sat.core.constants import Const as C -from twisted.internet import reactor, defer +from typing import Tuple + +from twisted.internet import defer, reactor from twisted.words.protocols.jabber import jid from wokkel import compat + from sat.core import exceptions +from sat.core.constants import Const as C +from sat.core.core_types import SatXMPPEntity +from sat.core.i18n import _ from sat.core.log import getLogger log = getLogger(__name__) @@ -65,22 +69,26 @@ name, version, os = data return (name or "", version or "", os or "") - d = self.version_get(jid.JID(entity_jid_s), profile_key) + client = self.host.get_client(profile_key) + d = self.version_get(client, jid.JID(entity_jid_s)) d.addCallback(prepare_for_bridge) return d - def version_get(self, jid_, profile_key=C.PROF_KEY_NONE): - """ Ask version of the client that jid_ is running + def version_get( + self, + client: SatXMPPEntity, + jid_: jid.JID, + ) -> Tuple[str, str, str]: + """Ask version of the client that jid_ is running + @param jid_: jid from who we want to know client's version - @param profile_key: %(doc_profile_key)s - @return (tuple): a defered which fire a tuple with the following data (None if not available): - - name: Natural language name of the software - - version: specific version of the software - - os: operating system of the queried entity + @return: a defered which fire a tuple with the following data (None if not available): + - name: Natural language name of the software + - version: specific version of the software + - os: operating system of the queried entity """ - client = self.host.get_client(profile_key) - def version_get(__): + def do_version_get(__): iq_elt = compat.IQ(client.xmlstream, "get") iq_elt["to"] = jid_.full() iq_elt.addElement("query", NS_VERSION) @@ -89,7 +97,7 @@ return d d = self.host.check_feature(client, NS_VERSION, jid_) - d.addCallback(version_get) + d.addCallback(do_version_get) reactor.callLater( TIMEOUT, d.cancel ) # XXX: timeout needed because some clients don't answer the IQ @@ -111,7 +119,7 @@ return tuple(ret) def _whois(self, client, whois_msg, mess_data, target_jid): - """ Add software/OS information to whois """ + """Add software/OS information to whois""" def version_cb(version_data): name, version, os = version_data @@ -129,6 +137,6 @@ else: whois_msg.append(_("Client software version request timeout")) - d = self.version_get(target_jid, client.profile) + d = self.version_get(client, target_jid) d.addCallbacks(version_cb, version_eb) return d