From 8471a485d1f9be3dc1f1c022ff49bee0b292cb6d Mon Sep 17 00:00:00 2001 From: Lance Stout Date: Thu, 1 Sep 2011 13:11:05 -0700 Subject: [PATCH] Clean up pubsub stanzas. --- sleekxmpp/plugins/xep_0060/stanza/pubsub.py | 183 ++++++++------------ 1 file changed, 74 insertions(+), 109 deletions(-) diff --git a/sleekxmpp/plugins/xep_0060/stanza/pubsub.py b/sleekxmpp/plugins/xep_0060/stanza/pubsub.py index 6aaafbc..1e66174 100644 --- a/sleekxmpp/plugins/xep_0060/stanza/pubsub.py +++ b/sleekxmpp/plugins/xep_0060/stanza/pubsub.py @@ -1,9 +1,13 @@ -from sleekxmpp.xmlstream.stanzabase import registerStanzaPlugin, ElementBase, ET, JID -from sleekxmpp.stanza.iq import Iq -from sleekxmpp.stanza.message import Message -from sleekxmpp.basexmpp import basexmpp -from sleekxmpp.xmlstream.xmlstream import XMLStream -import logging +""" + SleekXMPP: The Sleek XMPP Library + Copyright (C) 2011 Nathanael C. Fritz + This file is part of SleekXMPP. + + See the file LICENSE for copying permission. +""" + +from sleekxmpp import Iq, Message +from sleekxmpp.xmlstream import register_stanza_plugin, ElementBase, ET, JID from sleekxmpp.plugins import xep_0004 from sleekxmpp.plugins.xep_0060.stanza.base import OptionalSetting @@ -13,10 +17,13 @@ class Pubsub(ElementBase): name = 'pubsub' plugin_attrib = 'pubsub' interfaces = set(tuple()) - plugin_attrib_map = {} - plugin_tag_map = {} -registerStanzaPlugin(Iq, Pubsub) + +class Affiliations(ElementBase): + namespace = 'http://jabber.org/protocol/pubsub' + name = 'affiliations' + plugin_attrib = 'affiliations' + interfaces = set(('node',)) class Affiliation(ElementBase): @@ -24,25 +31,12 @@ class Affiliation(ElementBase): name = 'affiliation' plugin_attrib = name interfaces = set(('node', 'affiliation', 'jid')) - plugin_attrib_map = {} - plugin_tag_map = {} - def setJid(self, value): - self._setAttr('jid', str(value)) + def set_jid(self, value): + self._set_attr('jid', str(value)) - def getJid(self): - return JID(self._getAttr('jid')) - -class Affiliations(ElementBase): - namespace = 'http://jabber.org/protocol/pubsub' - name = 'affiliations' - plugin_attrib = 'affiliations' - interfaces = set(('node',)) - plugin_attrib_map = {} - plugin_tag_map = {} - subitem = (Affiliation,) - -registerStanzaPlugin(Pubsub, Affiliations) + def get_jid(self): + return JID(self._get_attr('jid')) class Subscription(ElementBase): @@ -50,57 +44,44 @@ class Subscription(ElementBase): name = 'subscription' plugin_attrib = name interfaces = set(('jid', 'node', 'subscription', 'subid')) - plugin_attrib_map = {} - plugin_tag_map = {} - def setjid(self, value): - self._setattr('jid', str(value)) + def set_jid(self, value): + self._set_attr('jid', str(value)) - def getjid(self): - return jid(self._getattr('jid')) + def get_jid(self): + return JID(self._get_attr('jid')) -registerStanzaPlugin(Pubsub, Subscription) class Subscriptions(ElementBase): namespace = 'http://jabber.org/protocol/pubsub' name = 'subscriptions' plugin_attrib = 'subscriptions' interfaces = set(('node',)) - plugin_attrib_map = {} - plugin_tag_map = {} - subitem = (Subscription,) - -registerStanzaPlugin(Pubsub, Subscriptions) class SubscribeOptions(ElementBase, OptionalSetting): namespace = 'http://jabber.org/protocol/pubsub' name = 'subscribe-options' plugin_attrib = 'suboptions' - plugin_attrib_map = {} - plugin_tag_map = {} interfaces = set(('required',)) -registerStanzaPlugin(Subscription, SubscribeOptions) class Item(ElementBase): namespace = 'http://jabber.org/protocol/pubsub' name = 'item' plugin_attrib = name interfaces = set(('id', 'payload')) - plugin_attrib_map = {} - plugin_tag_map = {} - def setPayload(self, value): + def set_payload(self, value): del self['payload'] self.append(value) - def getPayload(self): + def get_payload(self): childs = self.xml.getchildren() if len(childs) > 0: return childs[0] - def delPayload(self): + def del_payload(self): for child in self.xml.getchildren(): self.xml.remove(child) @@ -109,143 +90,111 @@ class Items(ElementBase): name = 'items' plugin_attrib = 'items' interfaces = set(('node', 'max_items')) - plugin_attrib_map = {} - plugin_tag_map = {} - subitem = (Item,) def set_max_items(self, value): self._set_attr('max_items', str(value)) -registerStanzaPlugin(Pubsub, Items) class Create(ElementBase): namespace = 'http://jabber.org/protocol/pubsub' name = 'create' plugin_attrib = name interfaces = set(('node',)) - plugin_attrib_map = {} - plugin_tag_map = {} -registerStanzaPlugin(Pubsub, Create) #class Default(ElementBase): # namespace = 'http://jabber.org/protocol/pubsub' # name = 'default' # plugin_attrib = name # interfaces = set(('node', 'type')) -# plugin_attrib_map = {} -# plugin_tag_map = {} # # def getType(self): -# t = self._getAttr('type') +# t = self._get_attr('type') # if not t: t == 'leaf' # return t # -#registerStanzaPlugin(Pubsub, Default) +#register_stanza_plugin(Pubsub, Default) class Publish(ElementBase): namespace = 'http://jabber.org/protocol/pubsub' name = 'publish' plugin_attrib = name interfaces = set(('node',)) - plugin_attrib_map = {} - plugin_tag_map = {} - subitem = (Item,) -registerStanzaPlugin(Pubsub, Publish) -registerStanzaPlugin(Publish, Item) class Retract(ElementBase): namespace = 'http://jabber.org/protocol/pubsub' name = 'retract' plugin_attrib = name interfaces = set(('node', 'notify')) - plugin_attrib_map = {} - plugin_tag_map = {} -registerStanzaPlugin(Pubsub, Retract) -registerStanzaPlugin(Retract, Item) class Unsubscribe(ElementBase): namespace = 'http://jabber.org/protocol/pubsub' name = 'unsubscribe' plugin_attrib = name interfaces = set(('node', 'jid', 'subid')) - plugin_attrib_map = {} - plugin_tag_map = {} - def setJid(self, value): - self._setAttr('jid', str(value)) + def set_jid(self, value): + self._set_attr('jid', str(value)) - def getJid(self): - return JID(self._getAttr('jid')) + def get_jid(self): + return JID(self._get_attr('jid')) -registerStanzaPlugin(Pubsub, Unsubscribe) class Subscribe(ElementBase): namespace = 'http://jabber.org/protocol/pubsub' name = 'subscribe' plugin_attrib = name interfaces = set(('node', 'jid')) - plugin_attrib_map = {} - plugin_tag_map = {} - def setJid(self, value): - self._setAttr('jid', str(value)) + def set_jid(self, value): + self._set_attr('jid', str(value)) - def getJid(self): - return JID(self._getAttr('jid')) + def get_jid(self): + return JID(self._get_attr('jid')) -registerStanzaPlugin(Pubsub, Subscribe) class Configure(ElementBase): namespace = 'http://jabber.org/protocol/pubsub' name = 'configure' plugin_attrib = name interfaces = set(('node', 'type')) - plugin_attrib_map = {} - plugin_tag_map = {} def getType(self): - t = self._getAttr('type') + t = self._get_attr('type') if not t: t == 'leaf' return t -registerStanzaPlugin(Pubsub, Configure) -registerStanzaPlugin(Configure, xep_0004.Form) class Options(ElementBase): namespace = 'http://jabber.org/protocol/pubsub' name = 'options' plugin_attrib = 'options' interfaces = set(('jid', 'node', 'options')) - plugin_attrib_map = {} - plugin_tag_map = {} def __init__(self, *args, **kwargs): ElementBase.__init__(self, *args, **kwargs) - def getOptions(self): + def get_options(self): config = self.xml.find('{jabber:x:data}x') form = xep_0004.Form(xml=config) return form - def setOptions(self, value): + def set_options(self, value): self.xml.append(value.getXML()) return self - def delOptions(self): + def del_options(self): config = self.xml.find('{jabber:x:data}x') self.xml.remove(config) - def setJid(self, value): - self._setAttr('jid', str(value)) + def set_jid(self, value): + self._set_attr('jid', str(value)) - def getJid(self): - return JID(self._getAttr('jid')) + def get_jid(self): + return JID(self._get_attr('jid')) -registerStanzaPlugin(Pubsub, Options) -registerStanzaPlugin(Subscribe, Options) class PublishOptions(ElementBase): namespace = 'http://jabber.org/protocol/pubsub' @@ -253,8 +202,6 @@ class PublishOptions(ElementBase): plugin_attrib = 'publish_options' interfaces = set(('publish_options',)) is_extension = True - plugin_attrib_map = {} - plugin_tag_map = {} def get_publish_options(self): config = self.xml.find('{jabber:x:data}x') @@ -276,37 +223,55 @@ class PublishOptions(ElementBase): self.xml.remove(config) self.parent().xml.remove(self.xml) -registerStanzaPlugin(Pubsub, PublishOptions) 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): + def set_payload(self, value): self.xml.append(value) - def getPayload(self): + def get_payload(self): childs = self.xml.getchildren() if len(childs) > 0: return childs[0] - def delPayload(self): + def del_payload(self): for child in self.xml.getchildren(): self.xml.remove(child) -registerStanzaPlugin(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 = {} -registerStanzaPlugin(Message, PubsubStateEvent) -registerStanzaPlugin(PubsubStateEvent, PubsubState) + +register_stanza_plugin(Iq, Pubsub) +register_stanza_plugin(Pubsub, Affiliations) +register_stanza_plugin(Pubsub, Configure) +register_stanza_plugin(Pubsub, Create) +register_stanza_plugin(Pubsub, Items) +register_stanza_plugin(Pubsub, Options) +register_stanza_plugin(Pubsub, Publish) +register_stanza_plugin(Pubsub, PublishOptions) +register_stanza_plugin(Pubsub, Retract) +register_stanza_plugin(Pubsub, Subscribe) +register_stanza_plugin(Pubsub, Subscription) +register_stanza_plugin(Pubsub, Subscriptions) +register_stanza_plugin(Pubsub, Unsubscribe) +register_stanza_plugin(Affiliations, Affiliation, iterable=True) +register_stanza_plugin(Configure, xep_0004.Form) +register_stanza_plugin(Items, Item, iterable=True) +register_stanza_plugin(Publish, Item, iterable=True) +register_stanza_plugin(Retract, Item) +register_stanza_plugin(Subscribe, Options) +register_stanza_plugin(Subscription, SubscribeOptions) +register_stanza_plugin(Subscriptions, Subscription, iterable=True) + +register_stanza_plugin(Message, PubsubStateEvent) +register_stanza_plugin(Iq, PubsubState) +register_stanza_plugin(PubsubStateEvent, PubsubState)