コード例 #1
0
    def testPublish(self):
        "Testing iq/pubsub/publish stanzas"
        iq = self.Iq()
        iq['pubsub']['publish']['node'] = 'thingers'
        payload = ET.fromstring("""
          <thinger xmlns="http://andyet.net/protocol/thinger" x="1" y='2'>
             <child1 />
             <child2 normandy='cheese' foo='bar' />
           </thinger>""")
        payload2 = ET.fromstring("""
          <thinger2 xmlns="http://andyet.net/protocol/thinger2" x="12" y='22'>
            <child12 />
            <child22 normandy='cheese2' foo='bar2' />
           </thinger2>""")
        item = pubsub.Item()
        item['id'] = 'asdf'
        item['payload'] = payload
        item2 = pubsub.Item()
        item2['id'] = 'asdf2'
        item2['payload'] = payload2
        iq['pubsub']['publish'].append(item)
        iq['pubsub']['publish'].append(item2)
        form = xep_0004.Form()
        form['type'] = 'submit'
        form.addField('pubsub#description',
                      ftype='text-single',
                      value='this thing is awesome')
        iq['pubsub']['publish_options'] = form

        self.check(
            iq, """
          <iq id="0">
            <pubsub xmlns="http://jabber.org/protocol/pubsub">
              <publish node="thingers">
                <item id="asdf">
                  <thinger xmlns="http://andyet.net/protocol/thinger" y="2" x="1">
                    <child1 />
                    <child2 foo="bar" normandy="cheese" />
                  </thinger>
                </item>
                <item id="asdf2">
                  <thinger2 xmlns="http://andyet.net/protocol/thinger2" y="22" x="12">
                    <child12 />
                    <child22 foo="bar2" normandy="cheese2" />
                  </thinger2>
                </item>
              </publish>
              <publish-options>
                <x xmlns="jabber:x:data" type="submit">
                  <field var="pubsub#description">
                    <value>this thing is awesome</value>
                  </field>
                </x>
              </publish-options>
            </pubsub>
          </iq>""")
コード例 #2
0
ファイル: pubsub.py プロジェクト: wuzzap/slixmpp
    def get_items(self,
                  jid,
                  node,
                  item_ids=None,
                  max_items=None,
                  iterator=False,
                  ifrom=None,
                  timeout_callback=None,
                  callback=None,
                  timeout=None):
        """
        Request the contents of a node's items.

        The desired items can be specified, or a query for the last
        few published items can be used.

        Pubsub services may use result set management for nodes with
        many items, so an iterator can be returned if needed.
        """
        iq = self.xmpp.Iq(sto=jid, sfrom=ifrom, stype='get')
        iq['pubsub']['items']['node'] = node
        iq['pubsub']['items']['max_items'] = max_items

        if item_ids is not None:
            for item_id in item_ids:
                item = stanza.Item()
                item['id'] = item_id
                iq['pubsub']['items'].append(item)

        if iterator:
            return self.xmpp['xep_0059'].iterate(iq, 'pubsub')
        else:
            return iq.send(callback=callback,
                           timeout=timeout,
                           timeout_callback=timeout_callback)
コード例 #3
0
 def testItems(self):
     "Testing iq/pubsub/items stanzas"
     iq = self.Iq()
     iq['pubsub']['items']['node'] = 'crap'
     payload = ET.fromstring("""
       <thinger xmlns="http://andyet.net/protocol/thinger" x="1" y='2'>
         <child1 />
         <child2 normandy='cheese' foo='bar' />
       </thinger>""")
     payload2 = ET.fromstring("""
       <thinger2 xmlns="http://andyet.net/protocol/thinger2" x="12" y='22'>
         <child12 />
         <child22 normandy='cheese2' foo='bar2' />
       </thinger2>""")
     item = pubsub.Item()
     item['id'] = 'asdf'
     item['payload'] = payload
     item2 = pubsub.Item()
     item2['id'] = 'asdf2'
     item2['payload'] = payload2
     iq['pubsub']['items'].append(item)
     iq['pubsub']['items'].append(item2)
     self.check(
         iq, """
       <iq id="0">
         <pubsub xmlns="http://jabber.org/protocol/pubsub">
           <items node="crap">
             <item id="asdf">
               <thinger xmlns="http://andyet.net/protocol/thinger" y="2" x="1">
                 <child1 />
                 <child2 foo="bar" normandy="cheese" />
               </thinger>
             </item>
             <item id="asdf2">
               <thinger2 xmlns="http://andyet.net/protocol/thinger2" y="22" x="12">
                 <child12 />
                 <child22 foo="bar2" normandy="cheese2" />
               </thinger2>
             </item>
           </items>
         </pubsub>
       </iq>""")
コード例 #4
0
ファイル: pubsub.py プロジェクト: wuzzap/slixmpp
 def get_item(self,
              jid,
              node,
              item_id,
              ifrom=None,
              timeout_callback=None,
              callback=None,
              timeout=None):
     """
     Retrieve the content of an individual item.
     """
     iq = self.xmpp.Iq(sto=jid, sfrom=ifrom, stype='get')
     item = stanza.Item()
     item['id'] = item_id
     iq['pubsub']['items']['node'] = node
     iq['pubsub']['items'].append(item)
     return iq.send(callback=callback,
                    timeout=timeout,
                    timeout_callback=timeout_callback)