def onDiscoInfo(self, iq): dl = [] try: room = jid_unescape(jid.internJID(iq['to']).user) except: room = None host = jid.internJID(iq['to']).host for c in self.parent: if IService.providedBy(c): if hasattr(c, "get_disco_info"): dl.append(c.get_disco_info(room=room, host=host, frm=iq['from'])) iq.handled = True d = defer.DeferredList(dl, fireOnOneErrback=1, consumeErrors=1) d.addCallback(self._disco_info_results, iq, room) d.addErrback(self._error, iq) d.addCallback(self.send)
def onDiscoItems(self, iq): dl = [] node = iq.query.getAttribute("node") try: room = jid_unescape(jid.internJID(iq['to']).user) except: room = None host = jid.internJID(iq['to']).host nick = jid.internJID(iq['to']).resource for c in self.parent: if IService.providedBy(c): if hasattr(c, "get_disco_items"): dl.append(c.get_disco_items(room=room, host=host, frm=iq['from'], nick=nick, node=node)) iq.handled = True d = defer.DeferredList(dl, fireOnOneErrback=1, consumeErrors=1) d.addCallback(self._disco_items_result, iq, room) d.addErrback(self._error, iq) d.addCallback(self.send)