Bump to 1.3.1
[slixmpp.git] / sleekxmpp / plugins / xep_0016 / privacy.py
blob79fd68f03b2d11377c276cf723e7961c8a7df9dd
1 """
2 SleekXMPP: The Sleek XMPP Library
3 Copyright (C) 2011 Nathanael C. Fritz, Lance J.T. Stout
4 This file is part of SleekXMPP.
6 See the file LICENSE for copying permission.
7 """
9 from sleekxmpp import Iq
10 from sleekxmpp.xmlstream import register_stanza_plugin
11 from sleekxmpp.plugins import BasePlugin
12 from sleekxmpp.plugins.xep_0016 import stanza
13 from sleekxmpp.plugins.xep_0016.stanza import Privacy, Item
16 class XEP_0016(BasePlugin):
18 name = 'xep_0016'
19 description = 'XEP-0016: Privacy Lists'
20 dependencies = set(['xep_0030'])
21 stanza = stanza
23 def plugin_init(self):
24 register_stanza_plugin(Iq, Privacy)
26 def plugin_end(self):
27 self.xmpp['xep_0030'].del_feature(feature=Privacy.namespace)
29 def session_bind(self, jid):
30 self.xmpp['xep_0030'].add_feature(Privacy.namespace)
32 def get_privacy_lists(self, block=True, timeout=None, callback=None):
33 iq = self.xmpp.Iq()
34 iq['type'] = 'get'
35 iq.enable('privacy')
36 return iq.send(block=block, timeout=timeout, callback=callback)
38 def get_list(self, name, block=True, timeout=None, callback=None):
39 iq = self.xmpp.Iq()
40 iq['type'] = 'get'
41 iq['privacy']['list']['name'] = name
42 return iq.send(block=block, timeout=timeout, callback=callback)
44 def get_active(self, block=True, timeout=None, callback=None):
45 iq = self.xmpp.Iq()
46 iq['type'] = 'get'
47 iq['privacy'].enable('active')
48 return iq.send(block=block, timeout=timeout, callback=callback)
50 def get_default(self, block=True, timeout=None, callback=None):
51 iq = self.xmpp.Iq()
52 iq['type'] = 'get'
53 iq['privacy'].enable('default')
54 return iq.send(block=block, timeout=timeout, callback=callback)
56 def activate(self, name, block=True, timeout=None, callback=None):
57 iq = self.xmpp.Iq()
58 iq['type'] = 'set'
59 iq['privacy']['active']['name'] = name
60 return iq.send(block=block, timeout=timeout, callback=callback)
62 def deactivate(self, block=True, timeout=None, callback=None):
63 iq = self.xmpp.Iq()
64 iq['type'] = 'set'
65 iq['privacy'].enable('active')
66 return iq.send(block=block, timeout=timeout, callback=callback)
68 def make_default(self, name, block=True, timeout=None, callback=None):
69 iq = self.xmpp.Iq()
70 iq['type'] = 'set'
71 iq['privacy']['default']['name'] = name
72 return iq.send(block=block, timeout=timeout, callback=callback)
74 def remove_default(self, block=True, timeout=None, callback=None):
75 iq = self.xmpp.Iq()
76 iq['type'] = 'set'
77 iq['privacy'].enable('default')
78 return iq.send(block=block, timeout=timeout, callback=callback)
80 def edit_list(self, name, rules, block=True, timeout=None, callback=None):
81 iq = self.xmpp.Iq()
82 iq['type'] = 'set'
83 iq['privacy']['list']['name'] = name
84 priv_list = iq['privacy']['list']
86 if not rules:
87 rules = []
89 for rule in rules:
90 if isinstance(rule, Item):
91 priv_list.append(rule)
92 continue
94 priv_list.add_item(
95 rule['value'],
96 rule['action'],
97 rule['order'],
98 itype=rule.get('type', None),
99 iq=rule.get('iq', None),
100 message=rule.get('message', None),
101 presence_in=rule.get('presence_in',
102 rule.get('presence-in', None)),
103 presence_out=rule.get('presence_out',
104 rule.get('presence-out', None)))
106 def remove_list(self, name, block=True, timeout=None, callback=None):
107 iq = self.xmpp.Iq()
108 iq['type'] = 'set'
109 iq['privacy']['list']['name'] = name
110 return iq.send(block=block, timeout=timeout, callback=callback)