diff options
Diffstat (limited to 'sleekxmpp/plugins/xep_0060')
-rw-r--r-- | sleekxmpp/plugins/xep_0060/pubsub.py | 6 | ||||
-rw-r--r-- | sleekxmpp/plugins/xep_0060/stanza/pubsub.py | 40 | ||||
-rw-r--r-- | sleekxmpp/plugins/xep_0060/stanza/pubsub_owner.py | 5 |
3 files changed, 14 insertions, 37 deletions
diff --git a/sleekxmpp/plugins/xep_0060/pubsub.py b/sleekxmpp/plugins/xep_0060/pubsub.py index 387c5a0f..bec5f565 100644 --- a/sleekxmpp/plugins/xep_0060/pubsub.py +++ b/sleekxmpp/plugins/xep_0060/pubsub.py @@ -26,7 +26,7 @@ class XEP_0060(BasePlugin): name = 'xep_0060' description = 'XEP-0060: Publish-Subscribe' - dependencies = set(['xep_0030', 'xep_0004']) + dependencies = set(['xep_0030', 'xep_0004', 'xep_0082', 'xep_0131']) stanza = stanza def plugin_init(self): @@ -53,6 +53,8 @@ class XEP_0060(BasePlugin): StanzaPath('message/pubsub_event/subscription'), self._handle_event_subscription)) + self.xmpp['xep_0131'].supported_headers.add('SubID') + def plugin_end(self): self.xmpp.remove_handler('Pubsub Event: Items') self.xmpp.remove_handler('Pubsub Event: Purge') @@ -421,7 +423,7 @@ class XEP_0060(BasePlugin): callback=None, timeout=None): iq = self.xmpp.Iq(sto=jid, sfrom=ifrom, stype='set') iq['pubsub_owner']['configure']['node'] = node - iq['pubsub_owner']['configure']['form'].values = config.values + iq['pubsub_owner']['configure'].append(config) return iq.send(block=block, callback=callback, timeout=timeout) def publish(self, jid, node, id=None, payload=None, options=None, diff --git a/sleekxmpp/plugins/xep_0060/stanza/pubsub.py b/sleekxmpp/plugins/xep_0060/stanza/pubsub.py index b2fe3010..c1907a13 100644 --- a/sleekxmpp/plugins/xep_0060/stanza/pubsub.py +++ b/sleekxmpp/plugins/xep_0060/stanza/pubsub.py @@ -74,7 +74,12 @@ class Item(ElementBase): def set_payload(self, value): del self['payload'] - self.append(value) + if isinstance(value, ElementBase): + if value.tag_name() in self.plugin_tag_map: + self.init_plugin(value.plugin_attrib, existing_xml=value.xml) + self.xml.append(value.xml) + else: + self.xml.append(value) def get_payload(self): childs = list(self.xml) @@ -243,39 +248,6 @@ class PublishOptions(ElementBase): self.parent().xml.remove(self.xml) -class PubsubState(ElementBase): - """This is an experimental pubsub extension.""" - namespace = 'http://jabber.org/protocol/psstate' - name = 'state' - plugin_attrib = 'psstate' - interfaces = set(('node', 'item', 'payload')) - - def set_payload(self, value): - self.xml.append(value) - - def get_payload(self): - childs = list(self.xml) - if len(childs) > 0: - return childs[0] - - def del_payload(self): - for child in self.xml: - self.xml.remove(child) - - -class PubsubStateEvent(ElementBase): - """This is an experimental pubsub extension.""" - namespace = 'http://jabber.org/protocol/psstate#event' - name = 'event' - plugin_attrib = 'psstate_event' - intefaces = set(tuple()) - - -register_stanza_plugin(Iq, PubsubState) -register_stanza_plugin(Message, PubsubStateEvent) -register_stanza_plugin(PubsubStateEvent, PubsubState) - - register_stanza_plugin(Iq, Pubsub) register_stanza_plugin(Pubsub, Affiliations) register_stanza_plugin(Pubsub, Configure) diff --git a/sleekxmpp/plugins/xep_0060/stanza/pubsub_owner.py b/sleekxmpp/plugins/xep_0060/stanza/pubsub_owner.py index 4a35db9d..d975a46d 100644 --- a/sleekxmpp/plugins/xep_0060/stanza/pubsub_owner.py +++ b/sleekxmpp/plugins/xep_0060/stanza/pubsub_owner.py @@ -34,7 +34,8 @@ class DefaultConfig(ElementBase): return self['form'] def set_config(self, value): - self['form'].values = value.values + del self['from'] + self.append(value) return self @@ -93,7 +94,9 @@ class OwnerRedirect(ElementBase): class OwnerSubscriptions(Subscriptions): + name = 'subscriptions' namespace = 'http://jabber.org/protocol/pubsub#owner' + plugin_attrib = name interfaces = set(('node',)) def append(self, subscription): |