added pubsub state stanzas and scheduled events
This commit is contained in:
@@ -10,6 +10,39 @@ def stanzaPlugin(stanza, plugin):
|
||||
stanza.plugin_attrib_map[plugin.plugin_attrib] = plugin
|
||||
stanza.plugin_tag_map["{%s}%s" % (plugin.namespace, plugin.name)] = plugin
|
||||
|
||||
class PubsubState(ElementBase):
|
||||
namespace = 'http://jabber.org/protocol/psstate'
|
||||
name = 'state'
|
||||
plugin_attrib = 'psstate'
|
||||
interfaces = set(('node', 'item', 'payload'))
|
||||
plugin_attrib_map = {}
|
||||
plugin_tag_map = {}
|
||||
|
||||
def setPayload(self, value):
|
||||
self.xml.append(value)
|
||||
|
||||
def getPayload(self):
|
||||
childs = self.xml.getchildren()
|
||||
if len(childs) > 0:
|
||||
return childs[0]
|
||||
|
||||
def delPayload(self):
|
||||
for child in self.xml.getchildren():
|
||||
self.xml.remove(child)
|
||||
|
||||
stanzaPlugin(Iq, PubsubState)
|
||||
|
||||
class PubsubStateEvent(ElementBase):
|
||||
namespace = 'http://jabber.org/protocol/psstate#event'
|
||||
name = 'event'
|
||||
plugin_attrib = 'psstate_event'
|
||||
intefaces = set(tuple())
|
||||
plugin_attrib_map = {}
|
||||
plugin_tag_map = {}
|
||||
|
||||
stanzaPlugin(Message, PubsubState)
|
||||
stanzaPlugin(PubsubState, PubsubStateEvent)
|
||||
|
||||
class Pubsub(ElementBase):
|
||||
namespace = 'http://jabber.org/protocol/pubsub'
|
||||
name = 'pubsub'
|
||||
@@ -321,18 +354,6 @@ class Options(ElementBase):
|
||||
stanzaPlugin(Pubsub, Options)
|
||||
stanzaPlugin(Subscribe, Options)
|
||||
|
||||
#iq = Iq()
|
||||
#iq['pubsub']['defaultconfig']
|
||||
#print(iq)
|
||||
|
||||
#from xml.etree import cElementTree as ET
|
||||
#iq = Iq()
|
||||
#item = Item()
|
||||
#item['payload'] = ET.Element("{http://netflint.net/p/crap}stupidshit")
|
||||
#item['id'] = 'aa11bbcc'
|
||||
#iq['pubsub']['items'].append(item)
|
||||
#print(iq)
|
||||
|
||||
class OwnerAffiliations(Affiliations):
|
||||
namespace = 'http://jabber.org/protocol/pubsub#owner'
|
||||
interfaces = set(('node'))
|
||||
|
@@ -188,7 +188,6 @@ class Form(FieldContainer):
|
||||
|
||||
#def getXML(self, tostring = False):
|
||||
def getXML(self, ftype=None):
|
||||
logging.debug("creating form as %s" % ftype)
|
||||
if ftype:
|
||||
self.type = ftype
|
||||
form = ET.Element('{jabber:x:data}x')
|
||||
|
@@ -14,12 +14,14 @@ class xep_0060(base.base_plugin):
|
||||
self.xep = '0060'
|
||||
self.description = 'Publish-Subscribe'
|
||||
|
||||
def create_node(self, jid, node, config=None, collection=False):
|
||||
def create_node(self, jid, node, config=None, collection=False, ntype=None):
|
||||
pubsub = ET.Element('{http://jabber.org/protocol/pubsub}pubsub')
|
||||
create = ET.Element('create')
|
||||
create.set('node', node)
|
||||
pubsub.append(create)
|
||||
configure = ET.Element('configure')
|
||||
if collection:
|
||||
ntype = 'collection'
|
||||
#if config is None:
|
||||
# submitform = self.xmpp.plugin['xep_0004'].makeForm('submit')
|
||||
#else:
|
||||
@@ -29,11 +31,11 @@ class xep_0060(base.base_plugin):
|
||||
submitform.field['FORM_TYPE'].setValue('http://jabber.org/protocol/pubsub#node_config')
|
||||
else:
|
||||
submitform.addField('FORM_TYPE', 'hidden', value='http://jabber.org/protocol/pubsub#node_config')
|
||||
if collection:
|
||||
if ntype:
|
||||
if 'pubsub#node_type' in submitform.field:
|
||||
submitform.field['pubsub#node_type'].setValue('collection')
|
||||
submitform.field['pubsub#node_type'].setValue(ntype)
|
||||
else:
|
||||
submitform.addField('pubsub#node_type', value='collection')
|
||||
submitform.addField('pubsub#node_type', value=ntype)
|
||||
else:
|
||||
if 'pubsub#node_type' in submitform.field:
|
||||
submitform.field['pubsub#node_type'].setValue('leaf')
|
||||
|
Reference in New Issue
Block a user