示例#1
0
    def items(self, requestor, target, nodeIdentifier):
        """
        Gather data for a disco items request.

        @param requestor: The entity that sent the request.
        @type requestor: L{JID<twisted.words.protocols.jabber.jid.JID>}
        @param target: The entity the request was sent to.
        @type target: L{JID<twisted.words.protocols.jabber.jid.JID>}
        @param nodeIdentifier: The optional node being queried, or C{''}.
        @type nodeIdentifier: C{unicode}
        @return: Deferred with the gathered results from sibling handlers.
        @rtype: L{defer.Deferred}
        """

        xmpp_manager = self.parent.manager

        items = []

        if not target.user and target.host in xmpp_manager.domains:
            items.append(
                disco.DiscoItem(JID(
                    '%s.%s' % (XMPPGatewayConfig.muc_prefix, target.host)),
                                name='Multi-User Chat'))

        return defer.succeed(items)
示例#2
0
    def getDiscoItems(self, requestor, target, nodeIdentifier):
        if nodeIdentifier or self.hideNodes:
            return defer.succeed([])

        d = self.getNodes(requestor, target)
        d.addCallback(lambda nodes: [disco.DiscoItem(target, node)
                                     for node in nodes])
        return d
示例#3
0
        def items(requestor, target, nodeIdentifier):
            self.assertEqual(JID('*****@*****.**'), requestor)
            self.assertEqual(JID('example.com'), target)
            self.assertEqual('', nodeIdentifier)

            return defer.succeed([
                disco.DiscoItem(JID('example.com'), 'test', 'Test node'),
            ])
示例#4
0
 def test_init(self):
     """
     Test initialization with a category, type and name.
     """
     item = disco.DiscoItem(JID(u'example.org'), u'test', u'The node')
     self.assertEqual(JID(u'example.org'), item.entity)
     self.assertEqual(u'test', item.nodeIdentifier)
     self.assertEqual(u'The node', item.name)
示例#5
0
文件: xmpp.py 项目: monoid/w4
 def getDiscoItems(self, req, target, ni):
     group, nick = resolveGroup(target)
     if group is None:
         # Return list of groups
         items = [disco.DiscoItem(gr.groupJid(), name=gr.name)
                  for gr in self.groupset.values()]
         return items
     else:
         # TODO
         return []
示例#6
0
    def test_toElementChildren(self):
        """
        Test C{toElement} creates a DOM with proper childs.
        """
        items = disco.DiscoItems()
        items.append(disco.DiscoItem(JID(u'example.org'), u'test', u'A node'))
        element = items.toElement()

        itemElements = domish.generateElementsQNamed(element.children, u'item',
                                                     NS_DISCO_ITEMS)
        self.assertEqual(1, len(list(itemElements)))
示例#7
0
    def test_toElementWithoutName(self):
        """
        Test proper rendering to a DOM representation without a name.

        The returned element should be properly named and have C{jid}, C{node}
        attributes, no C{name} attribute.
        """
        item = disco.DiscoItem(JID(u'example.org'), u'test')
        element = item.toElement()
        self.assertEqual(NS_DISCO_ITEMS, element.uri)
        self.assertEqual(u'item', element.name)
        self.assertEqual(u'example.org', element.getAttribute(u'jid'))
        self.assertEqual(u'test', element.getAttribute(u'node'))
        self.assertFalse(element.hasAttribute(u'name'))
示例#8
0
    def getDiscoItems(self, requestor, target, nodeIdentifier=''):
        if self.hideNodes:
            d = defer.succeed([])
        elif self.resource is not None:
            request = PubSubRequest('discoInfo')
            resource = self.resource.locateResource(request)
            d = resource.getNodes(requestor, target, nodeIdentifier)
        elif nodeIdentifier:
            d = self.getNodes(requestor, target)
        else:
            d = defer.succeed([])

        d.addCallback(
            lambda nodes: [disco.DiscoItem(target, node) for node in nodes])
        return d
示例#9
0
    def test_itemsNotDeferred(self):
        """
        C{info} should also collect results not returned via a deferred.
        """
        discoItems = [disco.DiscoItem(JID('example.com'), 'test', 'Test node')]

        @implementer(disco.IDisco)
        class DiscoResponder(XMPPHandler):
            def getDiscoItems(self, requestor, target, nodeIdentifier):
                if not nodeIdentifier:
                    return discoItems
                else:
                    return []

        def cb(result):
            self.assertEquals(discoItems, result)

        self.service.parent = [self.service, DiscoResponder()]
        d = self.service.items(JID('*****@*****.**'), JID('example.com'), '')
        d.addCallback(cb)
        return d
示例#10
0
    def test_items(self):
        """
        C{info} should gather disco items from sibling handlers.
        """
        discoItems = [disco.DiscoItem(JID('example.com'), 'test', 'Test node')]

        @implementer(disco.IDisco)
        class DiscoResponder(XMPPHandler):
            def getDiscoItems(self, requestor, target, nodeIdentifier):
                if not nodeIdentifier:
                    return defer.succeed(discoItems)
                else:
                    return defer.succeed([])

        def cb(result):
            self.assertEquals(discoItems, result)

        self.service.parent = [self.service, DiscoResponder()]
        d = self.service.items(JID('*****@*****.**'), JID('example.com'), '')
        d.addCallback(cb)
        return d
示例#11
0
 def getDiscoItems(self, requestor, target, node):
     myjid = jid.internJID(protocol.default_conn.jid)
     return defer.succeed([
         disco.DiscoItem(myjid, c.node, c.name)
         for c in all_commands.values()
     ])