diff options
Diffstat (limited to 'sleekxmpp/stanza')
-rw-r--r-- | sleekxmpp/stanza/error.py | 44 | ||||
-rw-r--r-- | sleekxmpp/stanza/htmlim.py | 35 | ||||
-rw-r--r-- | sleekxmpp/stanza/iq.py | 36 | ||||
-rw-r--r-- | sleekxmpp/stanza/message.py | 60 | ||||
-rw-r--r-- | sleekxmpp/stanza/nick.py | 37 | ||||
-rw-r--r-- | sleekxmpp/stanza/presence.py | 83 | ||||
-rw-r--r-- | sleekxmpp/stanza/rootstanza.py | 4 | ||||
-rw-r--r-- | sleekxmpp/stanza/roster.py | 36 |
8 files changed, 221 insertions, 114 deletions
diff --git a/sleekxmpp/stanza/error.py b/sleekxmpp/stanza/error.py index 6d18c297..09229bc6 100644 --- a/sleekxmpp/stanza/error.py +++ b/sleekxmpp/stanza/error.py @@ -6,8 +6,7 @@ See the file LICENSE for copying permission. """ -from sleekxmpp.xmlstream.stanzabase import registerStanzaPlugin -from sleekxmpp.xmlstream.stanzabase import ElementBase, ET +from sleekxmpp.xmlstream import ElementBase, ET, register_stanza_plugin class Error(ElementBase): @@ -40,13 +39,13 @@ class Error(ElementBase): should be treated. Methods: - setup -- Overrides ElementBase.setup. - getCondition -- Retrieve the name of the condition element. - setCondition -- Add a condition element. - delCondition -- Remove the condition element. - getText -- Retrieve the contents of the <text> element. - setText -- Set the contents of the <text> element. - delText -- Remove the <text> element. + setup -- Overrides ElementBase.setup. + get_condition -- Retrieve the name of the condition element. + set_condition -- Add a condition element. + del_condition -- Remove the condition element. + get_text -- Retrieve the contents of the <text> element. + set_text -- Set the contents of the <text> element. + del_text -- Remove the <text> element. """ namespace = 'jabber:client' @@ -78,6 +77,15 @@ class Error(ElementBase): Arguments: xml -- Use an existing XML object for the stanza's values. """ + # To comply with PEP8, method names now use underscores. + # Deprecated method names are re-mapped for backwards compatibility. + self.getCondition = self.get_condition + self.setCondition = self.set_condition + self.delCondition = self.del_condition + self.getText = self.get_text + self.setText = self.set_text + self.delText = self.del_text + if ElementBase.setup(self, xml): #If we had to generate XML then set default values. self['type'] = 'cancel' @@ -85,14 +93,14 @@ class Error(ElementBase): if self.parent is not None: self.parent()['type'] = 'error' - def getCondition(self): + def get_condition(self): """Return the condition element's name.""" for child in self.xml.getchildren(): if "{%s}" % self.condition_ns in child.tag: return child.tag.split('}', 1)[-1] return '' - def setCondition(self, value): + def set_condition(self, value): """ Set the tag name of the condition element. @@ -104,7 +112,7 @@ class Error(ElementBase): self.xml.append(ET.Element("{%s}%s" % (self.condition_ns, value))) return self - def delCondition(self): + def del_condition(self): """Remove the condition element.""" for child in self.xml.getchildren(): if "{%s}" % self.condition_ns in child.tag: @@ -113,21 +121,21 @@ class Error(ElementBase): self.xml.remove(child) return self - def getText(self): + def get_text(self): """Retrieve the contents of the <text> element.""" - return self._getSubText('{%s}text' % self.condition_ns) + return self._get_sub_text('{%s}text' % self.condition_ns) - def setText(self, value): + def set_text(self, value): """ Set the contents of the <text> element. Arguments: value -- The new contents for the <text> element. """ - self._setSubText('{%s}text' % self.condition_ns, text=value) + self._set_sub_text('{%s}text' % self.condition_ns, text=value) return self - def delText(self): + def del_text(self): """Remove the <text> element.""" - self._delSub('{%s}text' % self.condition_ns) + self._del_sub('{%s}text' % self.condition_ns) return self diff --git a/sleekxmpp/stanza/htmlim.py b/sleekxmpp/stanza/htmlim.py index c2f2f0c8..45868287 100644 --- a/sleekxmpp/stanza/htmlim.py +++ b/sleekxmpp/stanza/htmlim.py @@ -7,8 +7,7 @@ """ from sleekxmpp.stanza import Message -from sleekxmpp.xmlstream.stanzabase import registerStanzaPlugin -from sleekxmpp.xmlstream.stanzabase import ElementBase, ET +from sleekxmpp.xmlstream import ElementBase, ET, register_stanza_plugin class HTMLIM(ElementBase): @@ -36,9 +35,10 @@ class HTMLIM(ElementBase): body -- The contents of the HTML body tag. Methods: - getBody -- Return the HTML body contents. - setBody -- Set the HTML body contents. - delBody -- Remove the HTML body contents. + setup -- Overrides ElementBase.setup. + get_body -- Return the HTML body contents. + set_body -- Set the HTML body contents. + del_body -- Remove the HTML body contents. """ namespace = 'http://jabber.org/protocol/xhtml-im' @@ -46,7 +46,24 @@ class HTMLIM(ElementBase): interfaces = set(('body',)) plugin_attrib = name - def setBody(self, html): + def setup(self, xml=None): + """ + Populate the stanza object using an optional XML object. + + Overrides StanzaBase.setup. + + Arguments: + xml -- Use an existing XML object for the stanza's values. + """ + # To comply with PEP8, method names now use underscores. + # Deprecated method names are re-mapped for backwards compatibility. + self.setBody = self.set_body + self.getBody = self.get_body + self.delBody = self.del_body + + return ElementBase.setup(self, xml) + + def set_body(self, html): """ Set the contents of the HTML body. @@ -64,17 +81,17 @@ class HTMLIM(ElementBase): else: self.xml.append(html) - def getBody(self): + def get_body(self): """Return the contents of the HTML body.""" html = self.xml.find('{http://www.w3.org/1999/xhtml}body') if html is None: return '' return html - def delBody(self): + def del_body(self): """Remove the HTML body contents.""" if self.parent is not None: self.parent().xml.remove(self.xml) -registerStanzaPlugin(Message, HTMLIM) +register_stanza_plugin(Message, HTMLIM) diff --git a/sleekxmpp/stanza/iq.py b/sleekxmpp/stanza/iq.py index c5ef8bb4..614d14f5 100644 --- a/sleekxmpp/stanza/iq.py +++ b/sleekxmpp/stanza/iq.py @@ -8,8 +8,7 @@ from sleekxmpp.stanza import Error from sleekxmpp.stanza.rootstanza import RootStanza -from sleekxmpp.xmlstream import RESPONSE_TIMEOUT -from sleekxmpp.xmlstream.stanzabase import StanzaBase, ET +from sleekxmpp.xmlstream import RESPONSE_TIMEOUT, StanzaBase, ET from sleekxmpp.xmlstream.handler import Waiter from sleekxmpp.xmlstream.matcher import MatcherId @@ -53,14 +52,14 @@ class Iq(RootStanza): types -- May be one of: get, set, result, or error. Methods: - __init__ -- Overrides StanzaBase.__init__. - unhandled -- Send error if there are no handlers. - setPayload -- Overrides StanzaBase.setPayload. - setQuery -- Add or modify a <query> element. - getQuery -- Return the namespace of the <query> element. - delQuery -- Remove the <query> element. - reply -- Overrides StanzaBase.reply - send -- Overrides StanzaBase.send + __init__ -- Overrides StanzaBase.__init__. + unhandled -- Send error if there are no handlers. + set_payload -- Overrides StanzaBase.set_payload. + set_query -- Add or modify a <query> element. + get_query -- Return the namespace of the <query> element. + del_query -- Remove the <query> element. + reply -- Overrides StanzaBase.reply + send -- Overrides StanzaBase.send """ namespace = 'jabber:client' @@ -76,6 +75,13 @@ class Iq(RootStanza): Overrides StanzaBase.__init__. """ StanzaBase.__init__(self, *args, **kwargs) + # To comply with PEP8, method names now use underscores. + # Deprecated method names are re-mapped for backwards compatibility. + self.setPayload = self.set_payload + self.getQuery = self.get_query + self.setQuery = self.set_query + self.delQuery = self.del_query + if self['id'] == '': if self.stream is not None: self['id'] = self.stream.getNewId() @@ -94,7 +100,7 @@ class Iq(RootStanza): self['error']['text'] = 'No handlers registered for this request.' self.send() - def setPayload(self, value): + def set_payload(self, value): """ Set the XML contents of the <iq> stanza. @@ -102,10 +108,10 @@ class Iq(RootStanza): value -- An XML object to use as the <iq> stanza's contents """ self.clear() - StanzaBase.setPayload(self, value) + StanzaBase.set_payload(self, value) return self - def setQuery(self, value): + def set_query(self, value): """ Add or modify a <query> element. @@ -121,7 +127,7 @@ class Iq(RootStanza): self.xml.append(query) return self - def getQuery(self): + def get_query(self): """Return the namespace of the <query> element.""" for child in self.xml.getchildren(): if child.tag.endswith('query'): @@ -131,7 +137,7 @@ class Iq(RootStanza): return ns return '' - def delQuery(self): + def del_query(self): """Remove the <query> element.""" for child in self.xml.getchildren(): if child.tag.endswith('query'): diff --git a/sleekxmpp/stanza/message.py b/sleekxmpp/stanza/message.py index 560e1d47..66c74d8a 100644 --- a/sleekxmpp/stanza/message.py +++ b/sleekxmpp/stanza/message.py @@ -8,7 +8,7 @@ from sleekxmpp.stanza import Error from sleekxmpp.stanza.rootstanza import RootStanza -from sleekxmpp.xmlstream.stanzabase import StanzaBase, ET +from sleekxmpp.xmlstream import StanzaBase, ET class Message(RootStanza): @@ -42,16 +42,17 @@ class Message(RootStanza): types -- May be one of: normal, chat, headline, groupchat, or error. Methods: - chat -- Set the message type to 'chat'. - normal -- Set the message type to 'normal'. - reply -- Overrides StanzaBase.reply - getType -- Overrides StanzaBase interface - getMucroom -- Return the name of the MUC room of the message. - setMucroom -- Dummy method to prevent assignment. - delMucroom -- Dummy method to prevent deletion. - getMucnick -- Return the MUC nickname of the message's sender. - setMucnick -- Dummy method to prevent assignment. - delMucnick -- Dummy method to prevent deletion. + setup -- Overrides StanzaBase.setup. + chat -- Set the message type to 'chat'. + normal -- Set the message type to 'normal'. + reply -- Overrides StanzaBase.reply + get_type -- Overrides StanzaBase interface + get_mucroom -- Return the name of the MUC room of the message. + set_mucroom -- Dummy method to prevent assignment. + del_mucroom -- Dummy method to prevent deletion. + get_mucnick -- Return the MUC nickname of the message's sender. + set_mucnick -- Dummy method to prevent assignment. + del_mucnick -- Dummy method to prevent deletion. """ namespace = 'jabber:client' @@ -62,7 +63,28 @@ class Message(RootStanza): plugin_attrib = name types = set((None, 'normal', 'chat', 'headline', 'error', 'groupchat')) - def getType(self): + def setup(self, xml=None): + """ + Populate the stanza object using an optional XML object. + + Overrides StanzaBase.setup. + + Arguments: + xml -- Use an existing XML object for the stanza's values. + """ + # To comply with PEP8, method names now use underscores. + # Deprecated method names are re-mapped for backwards compatibility. + self.getType = self.get_type + self.getMucroom = self.get_mucroom + self.setMucroom = self.set_mucroom + self.delMucroom = self.del_mucroom + self.getMucnick = self.get_mucnick + self.setMucnick = self.set_mucnick + self.delMucnick = self.del_mucnick + + return StanzaBase.setup(self, xml) + + def get_type(self): """ Return the message type. @@ -70,7 +92,7 @@ class Message(RootStanza): Returns 'normal' if no type attribute is present. """ - return self._getAttr('type', 'normal') + return self._get_attr('type', 'normal') def chat(self): """Set the message type to 'chat'.""" @@ -104,7 +126,7 @@ class Message(RootStanza): self['body'] = body return self - def getMucroom(self): + def get_mucroom(self): """ Return the name of the MUC room where the message originated. @@ -115,7 +137,7 @@ class Message(RootStanza): else: return '' - def getMucnick(self): + def get_mucnick(self): """ Return the nickname of the MUC user that sent the message. @@ -126,18 +148,18 @@ class Message(RootStanza): else: return '' - def setMucroom(self, value): + def set_mucroom(self, value): """Dummy method to prevent modification.""" pass - def delMucroom(self): + def del_mucroom(self): """Dummy method to prevent deletion.""" pass - def setMucnick(self, value): + def set_mucnick(self, value): """Dummy method to prevent modification.""" pass - def delMucnick(self): + def del_mucnick(self): """Dummy method to prevent deletion.""" pass diff --git a/sleekxmpp/stanza/nick.py b/sleekxmpp/stanza/nick.py index de54b307..a9243d1a 100644 --- a/sleekxmpp/stanza/nick.py +++ b/sleekxmpp/stanza/nick.py @@ -7,8 +7,7 @@ """ from sleekxmpp.stanza import Message, Presence -from sleekxmpp.xmlstream.stanzabase import registerStanzaPlugin -from sleekxmpp.xmlstream.stanzabase import ElementBase, ET +from sleekxmpp.xmlstream import ElementBase, ET, register_stanza_plugin class Nick(ElementBase): @@ -39,9 +38,10 @@ class Nick(ElementBase): nick -- A global, friendly or informal name chosen by a user. Methods: - getNick -- Return the nickname in the <nick> element. - setNick -- Add a <nick> element with the given nickname. - delNick -- Remove the <nick> element. + setup -- Overrides ElementBase.setup. + get_nick -- Return the nickname in the <nick> element. + set_nick -- Add a <nick> element with the given nickname. + del_nick -- Remove the <nick> element. """ namespace = 'http://jabber.org/nick/nick' @@ -49,7 +49,24 @@ class Nick(ElementBase): plugin_attrib = name interfaces = set(('nick',)) - def setNick(self, nick): + def setup(self, xml=None): + """ + Populate the stanza object using an optional XML object. + + Overrides StanzaBase.setup. + + Arguments: + xml -- Use an existing XML object for the stanza's values. + """ + # To comply with PEP8, method names now use underscores. + # Deprecated method names are re-mapped for backwards compatibility. + self.setNick = self.set_nick + self.getNick = self.get_nick + self.delNick = self.del_nick + + return ElementBase.setup(self, xml) + + def set_nick(self, nick): """ Add a <nick> element with the given nickname. @@ -58,15 +75,15 @@ class Nick(ElementBase): """ self.xml.text = nick - def getNick(self): + def get_nick(self): """Return the nickname in the <nick> element.""" return self.xml.text - def delNick(self): + def del_nick(self): """Remove the <nick> element.""" if self.parent is not None: self.parent().xml.remove(self.xml) -registerStanzaPlugin(Message, Nick) -registerStanzaPlugin(Presence, Nick) +register_stanza_plugin(Message, Nick) +register_stanza_plugin(Presence, Nick) diff --git a/sleekxmpp/stanza/presence.py b/sleekxmpp/stanza/presence.py index cb957221..964ef11a 100644 --- a/sleekxmpp/stanza/presence.py +++ b/sleekxmpp/stanza/presence.py @@ -8,7 +8,7 @@ from sleekxmpp.stanza import Error from sleekxmpp.stanza.rootstanza import RootStanza -from sleekxmpp.xmlstream.stanzabase import StanzaBase, ET +from sleekxmpp.xmlstream import StanzaBase, ET class Presence(RootStanza): @@ -52,12 +52,13 @@ class Presence(RootStanza): showtypes -- One of: away, chat, dnd, and xa. Methods: - reply -- Overrides StanzaBase.reply - setShow -- Set the value of the <show> element. - getType -- Get the value of the type attribute or <show> element. - setType -- Set the value of the type attribute or <show> element. - getPriority -- Get the value of the <priority> element. - setPriority -- Set the value of the <priority> element. + setup -- Overrides StanzaBase.setup + reply -- Overrides StanzaBase.reply + set_show -- Set the value of the <show> element. + get_type -- Get the value of the type attribute or <show> element. + set_type -- Set the value of the type attribute or <show> element. + get_priority -- Get the value of the <priority> element. + set_priority -- Set the value of the <priority> element. """ namespace = 'jabber:client' @@ -71,7 +72,27 @@ class Presence(RootStanza): 'subscribed', 'unsubscribe', 'unsubscribed')) showtypes = set(('dnd', 'chat', 'xa', 'away')) - def setShow(self, show): + def setup(self, xml=None): + """ + Populate the stanza object using an optional XML object. + + Overrides ElementBase.setup. + + Arguments: + xml -- Use an existing XML object for the stanza's values. + """ + # To comply with PEP8, method names now use underscores. + # Deprecated method names are re-mapped for backwards compatibility. + self.setShow = self.set_show + self.getType = self.get_type + self.setType = self.set_type + self.delType = self.get_type + self.getPriority = self.get_priority + self.setPriority = self.set_priority + + return StanzaBase.setup(self, xml) + + def set_show(self, show): """ Set the value of the <show> element. @@ -79,12 +100,24 @@ class Presence(RootStanza): show -- Must be one of: away, chat, dnd, or xa. """ if show is None: - self._delSub('show') + self._del_sub('show') elif show in self.showtypes: - self._setSubText('show', text=show) + self._set_sub_text('show', text=show) return self - def setType(self, value): + def get_type(self): + """ + Return the value of the <presence> stanza's type attribute, or + the value of the <show> element. + """ + out = self._get_attr('type') + if not out: + out = self['show'] + if not out or out is None: + out = 'available' + return out + + def set_type(self, value): """ Set the type attribute's value, and the <show> element if applicable. @@ -96,19 +129,19 @@ class Presence(RootStanza): self['show'] = None if value == 'available': value = '' - self._setAttr('type', value) + self._set_attr('type', value) elif value in self.showtypes: self['show'] = value return self - def delType(self): + def del_type(self): """ Remove both the type attribute and the <show> element. """ - self._delAttr('type') - self._delSub('show') + self._del_attr('type') + self._del_sub('show') - def setPriority(self, value): + def set_priority(self, value): """ Set the entity's priority value. Some server use priority to determine message routing behavior. @@ -119,13 +152,13 @@ class Presence(RootStanza): Arguments: value -- An integer value greater than or equal to 0. """ - self._setSubText('priority', text=str(value)) + self._set_sub_text('priority', text=str(value)) - def getPriority(self): + def get_priority(self): """ Return the value of the <presence> element as an integer. """ - p = self._getSubText('priority') + p = self._get_sub_text('priority') if not p: p = 0 try: @@ -134,18 +167,6 @@ class Presence(RootStanza): # The priority is not a number: we consider it 0 as a default return 0 - def getType(self): - """ - Return the value of the <presence> stanza's type attribute, or - the value of the <show> element. - """ - out = self._getAttr('type') - if not out: - out = self['show'] - if not out or out is None: - out = 'available' - return out - def reply(self): """ Set the appropriate presence reply type. diff --git a/sleekxmpp/stanza/rootstanza.py b/sleekxmpp/stanza/rootstanza.py index eafc79a2..2677ea91 100644 --- a/sleekxmpp/stanza/rootstanza.py +++ b/sleekxmpp/stanza/rootstanza.py @@ -12,7 +12,7 @@ import sys from sleekxmpp.exceptions import XMPPError from sleekxmpp.stanza import Error -from sleekxmpp.xmlstream.stanzabase import ET, StanzaBase, registerStanzaPlugin +from sleekxmpp.xmlstream import ET, StanzaBase, register_stanza_plugin class RootStanza(StanzaBase): @@ -63,4 +63,4 @@ class RootStanza(StanzaBase): self.send() -registerStanzaPlugin(RootStanza, Error) +register_stanza_plugin(RootStanza, Error) diff --git a/sleekxmpp/stanza/roster.py b/sleekxmpp/stanza/roster.py index 292c8956..8f154a22 100644 --- a/sleekxmpp/stanza/roster.py +++ b/sleekxmpp/stanza/roster.py @@ -8,8 +8,7 @@ from sleekxmpp.stanza import Iq from sleekxmpp.xmlstream import JID -from sleekxmpp.xmlstream.stanzabase import registerStanzaPlugin -from sleekxmpp.xmlstream.stanzabase import ET, ElementBase +from sleekxmpp.xmlstream import ET, ElementBase, register_stanza_plugin class Roster(ElementBase): @@ -29,9 +28,9 @@ class Roster(ElementBase): in the stanza. Methods: - getItems -- Return a dictionary of roster entries. - setItems -- Add <item> elements. - delItems -- Remove all <item> elements. + get_items -- Return a dictionary of roster entries. + set_items -- Add <item> elements. + del_items -- Remove all <item> elements. """ namespace = 'jabber:iq:roster' @@ -39,7 +38,24 @@ class Roster(ElementBase): plugin_attrib = 'roster' interfaces = set(('items',)) - def setItems(self, items): + def setup(self, xml=None): + """ + Populate the stanza object using an optional XML object. + + Overrides StanzaBase.setup. + + Arguments: + xml -- Use an existing XML object for the stanza's values. + """ + # To comply with PEP8, method names now use underscores. + # Deprecated method names are re-mapped for backwards compatibility. + self.setItems = self.set_items + self.getItems = self.get_items + self.delItems = self.del_items + + return ElementBase.setup(self, xml) + + def set_items(self, items): """ Set the roster entries in the <roster> stanza. @@ -54,7 +70,7 @@ class Roster(ElementBase): Arguments: items -- A dictionary of roster entries. """ - self.delItems() + self.del_items() for jid in items: ijid = str(jid) item = ET.Element('{jabber:iq:roster}item', {'jid': ijid}) @@ -72,7 +88,7 @@ class Roster(ElementBase): self.xml.append(item) return self - def getItems(self): + def get_items(self): """ Return a dictionary of roster entries. @@ -98,7 +114,7 @@ class Roster(ElementBase): items[itemxml.get('jid')] = item return items - def delItems(self): + def del_items(self): """ Remove all <item> elements from the roster stanza. """ @@ -106,4 +122,4 @@ class Roster(ElementBase): self.xml.remove(child) -registerStanzaPlugin(Iq, Roster) +register_stanza_plugin(Iq, Roster) |