From 0c33075e34bba64aab83ab0c03588586711d5d40 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philipp=20H=C3=B6rist?= Date: Thu, 15 Aug 2019 19:43:16 +0200 Subject: DiscoInfo: Add stanza attribute Make stanza object available in DiscoInfo and derive some propertys from it --- nbxmpp/structs.py | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) (limited to 'nbxmpp/structs.py') diff --git a/nbxmpp/structs.py b/nbxmpp/structs.py index bf9a164..e5168f0 100644 --- a/nbxmpp/structs.py +++ b/nbxmpp/structs.py @@ -119,12 +119,12 @@ DiscoItem = namedtuple('DiscoItem', 'jid name node') DiscoItem.__new__.__defaults__ = (None, None) -class DiscoInfo(namedtuple('DiscoInfo', 'jid node identities features dataforms')): +class DiscoInfo(namedtuple('DiscoInfo', 'stanza identities features dataforms')): __slots__ = [] - def __new__(cls, jid, node, identities, features, dataforms): - return super(DiscoInfo, cls).__new__(cls, jid, node, identities, + def __new__(cls, stanza, identities, features, dataforms): + return super(DiscoInfo, cls).__new__(cls, stanza, identities, features, dataforms) def get_caps_hash(self): @@ -150,6 +150,24 @@ class DiscoInfo(namedtuple('DiscoInfo', 'jid node identities features dataforms' def supports(self, feature): return feature in self.features + @property + def node(self): + try: + query = self.stanza.getQuery() + except Exception: + return None + + if query is not None: + return query.getAttr('node') + return None + + @property + def jid(self): + try: + return self.stanza.getFrom() + except Exception: + return None + @property def mam_namespace(self): if NS_MAM_2 in self.features: -- cgit v1.2.3