summaryrefslogtreecommitdiff
path: root/sleekxmpp/plugins/xep_0191/stanza.py
diff options
context:
space:
mode:
authorLance Stout <lancestout@gmail.com>2012-07-16 20:13:35 -0700
committerLance Stout <lancestout@gmail.com>2012-07-16 20:13:35 -0700
commit78f03253983779673beaf3c102ae315707a49d2c (patch)
treedd5c031b2fc96c88e3d03b7f21cb275ef937398c /sleekxmpp/plugins/xep_0191/stanza.py
parent1efe04995941933e7579efffd8f325d8c4b516ef (diff)
parentf6edaa56a6e91f7104cd63e5d48b39d4ca7e09f2 (diff)
downloadslixmpp-78f03253983779673beaf3c102ae315707a49d2c.tar.gz
slixmpp-78f03253983779673beaf3c102ae315707a49d2c.tar.bz2
slixmpp-78f03253983779673beaf3c102ae315707a49d2c.tar.xz
slixmpp-78f03253983779673beaf3c102ae315707a49d2c.zip
Merge branch 'master' into develop
Diffstat (limited to 'sleekxmpp/plugins/xep_0191/stanza.py')
-rw-r--r--sleekxmpp/plugins/xep_0191/stanza.py50
1 files changed, 50 insertions, 0 deletions
diff --git a/sleekxmpp/plugins/xep_0191/stanza.py b/sleekxmpp/plugins/xep_0191/stanza.py
new file mode 100644
index 00000000..c5a284bd
--- /dev/null
+++ b/sleekxmpp/plugins/xep_0191/stanza.py
@@ -0,0 +1,50 @@
+"""
+ SleekXMPP: The Sleek XMPP Library
+ Copyright (C) 2012 Nathanael C. Fritz, Lance J.T. Stout
+ This file is part of SleekXMPP.
+
+ See the file LICENSE for copying permission.
+"""
+
+from sleekxmpp.xmlstream import ET, ElementBase, JID
+
+
+class BlockList(ElementBase):
+ name = 'blocklist'
+ namespace = 'urn:xmpp:blocking'
+ plugin_attrib = 'blocklist'
+ interfaces = set(['items'])
+
+ def get_items(self):
+ result = set()
+ items = self.xml.findall('{%s}item' % self.namespace)
+ if items is not None:
+ for item in items:
+ jid = JID(item.attrib.get('jid', ''))
+ if jid:
+ result.add(jid)
+ return result
+
+ def set_items(self, values):
+ self.del_items()
+ for jid in values:
+ if jid:
+ item = ET.Element('{%s}item' % self.namespace)
+ item.attrib['jid'] = JID(jid).full
+ self.xml.append(item)
+
+ def del_items(self):
+ items = self.xml.findall('{%s}item' % self.namespace)
+ if items is not None:
+ for item in items:
+ self.xml.remove(item)
+
+
+class Block(BlockList):
+ name = 'block'
+ plugin_attrib = 'block'
+
+
+class Unblock(BlockList):
+ name = 'unblock'
+ plugin_attrib = 'unblock'