Update nick stanza with documentation and PEP8 style.

This commit is contained in:
Lance Stout 2010-08-03 18:32:53 -04:00
parent 956fdf6970
commit fec69be731
3 changed files with 84 additions and 17 deletions

View file

@ -5,22 +5,68 @@
See the file LICENSE for copying permission. See the file LICENSE for copying permission.
""" """
from .. xmlstream.stanzabase import registerStanzaPlugin, ElementBase, ET
from sleekxmpp.stanza import Message, Presence
from sleekxmpp.xmlstream.stanzabase import registerStanzaPlugin
from sleekxmpp.xmlstream.stanzabase import ElementBase, ET
class Nick(ElementBase): class Nick(ElementBase):
"""
XEP-0172: User Nickname allows the addition of a <nick> element
in several stanza types, including <message> and <presence> stanzas.
The nickname contained in a <nick> should be the global, friendly or
informal name chosen by the owner of a bare JID. The <nick> element
may be included when establishing communications with new entities,
such as normal XMPP users or MUC services.
The nickname contained in a <nick> element will not necessarily be
the same as the nickname used in a MUC.
Example stanzas:
<message to="user@example.com">
<nick xmlns="http://jabber.org/nick/nick">The User</nick>
<body>...</body>
</message>
<presence to="otheruser@example.com" type="subscribe">
<nick xmlns="http://jabber.org/nick/nick">The User</nick>
</presence>
Stanza Interface:
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.
"""
namespace = 'http://jabber.org/nick/nick' namespace = 'http://jabber.org/nick/nick'
name = 'nick' name = 'nick'
plugin_attrib = 'nick' plugin_attrib = name
interfaces = set(('nick')) interfaces = set(('nick',))
plugin_attrib_map = set()
plugin_xml_map = set()
def setNick(self, nick): def setNick(self, nick):
"""
Add a <nick> element with the given nickname.
Arguments:
nick -- A human readable, informal name.
"""
self.xml.text = nick self.xml.text = nick
def getNick(self): def getNick(self):
"""Return the nickname in the <nick> element."""
return self.xml.text return self.xml.text
def delNick(self): def delNick(self):
"""Remove the <nick> element."""
if self.parent is not None: if self.parent is not None:
self.parent().xml.remove(self.xml) self.parent().xml.remove(self.xml)
registerStanzaPlugin(Message, Nick)
registerStanzaPlugin(Presence, Nick)

View file

@ -25,7 +25,7 @@ class TestMessageStanzas(SleekTest):
self.failUnless(str(msg['to']) == 'usr@server.tld') self.failUnless(str(msg['to']) == 'usr@server.tld')
def testHTMLPlugin(self): def testHTMLPlugin(self):
"Test message/html/html stanza" "Test message/html/body stanza"
msg = self.Message() msg = self.Message()
msg['to'] = "fritzy@netflint.net/sleekxmpp" msg['to'] = "fritzy@netflint.net/sleekxmpp"
msg['body'] = "this is the plaintext message" msg['body'] = "this is the plaintext message"
@ -43,4 +43,15 @@ class TestMessageStanzas(SleekTest):
</html> </html>
</message>""") </message>""")
def testNickPlugin(self):
"Test message/nick/nick stanza."
msg = self.Message()
msg['nick']['nick'] = 'A nickname!'
self.checkMessage(msg, """
<message>
<nick xmlns="http://jabber.org/nick/nick">A nickname!</nick>
</message>
""")
suite = unittest.TestLoader().loadTestsFromTestCase(TestMessageStanzas) suite = unittest.TestLoader().loadTestsFromTestCase(TestMessageStanzas)

View file

@ -53,5 +53,15 @@ class TestPresenceStanzas(SleekTest):
self.failUnless(c.roster == {}, self.failUnless(c.roster == {},
"Roster updated for superfulous unavailable presence") "Roster updated for superfulous unavailable presence")
def testNickPlugin(self):
"""Test presence/nick/nick stanza."""
p = self.Presence()
p['nick']['nick'] = 'A nickname!'
self.checkPresence(p, """
<presence>
<nick xmlns="http://jabber.org/nick/nick">A nickname!</nick>
</presence>
""")
suite = unittest.TestLoader().loadTestsFromTestCase(TestPresenceStanzas) suite = unittest.TestLoader().loadTestsFromTestCase(TestPresenceStanzas)