Fix the iq.send() function, and a bunch of places where it is called
[slixmpp.git] / slixmpp / plugins / xep_0016 / privacy.py
blobe07ac63364044e99966ad0015d01aed63939749e
1 """
2 Slixmpp: The Slick XMPP Library
3 Copyright (C) 2011 Nathanael C. Fritz, Lance J.T. Stout
4 This file is part of Slixmpp.
6 See the file LICENSE for copying permission.
7 """
9 from slixmpp import Iq
10 from slixmpp.xmlstream import register_stanza_plugin
11 from slixmpp.plugins import BasePlugin
12 from slixmpp.plugins.xep_0016 import stanza
13 from slixmpp.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, timeout=None, callback=None,
33 timeout_callback=None):
34 iq = self.xmpp.Iq()
35 iq['type'] = 'get'
36 iq.enable('privacy')
37 iq.send(timeout=timeout, callback=callback,
38 timeout_callback=timeout_callback)
40 def get_list(self, name, timeout=None, callback=None, timeout_callback=None):
41 iq = self.xmpp.Iq()
42 iq['type'] = 'get'
43 iq['privacy']['list']['name'] = name
44 iq.send(timeout=timeout, callback=callback,
45 timeout_callback=timeout_callback)
47 def get_active(self, timeout=None, callback=None, timeout_callback=None):
48 iq = self.xmpp.Iq()
49 iq['type'] = 'get'
50 iq['privacy'].enable('active')
51 iq.send(timeout=timeout, callback=callback,
52 timeout_callback=timeout_callback)
54 def get_default(self, timeout=None, callback=None,
55 timeout_callback=None):
56 iq = self.xmpp.Iq()
57 iq['type'] = 'get'
58 iq['privacy'].enable('default')
59 iq.send(timeout=timeout, callback=callback,
60 timeout_callback=timeout_callback)
62 def activate(self, name, timeout=None, callback=None,
63 timeout_callback=None):
64 iq = self.xmpp.Iq()
65 iq['type'] = 'set'
66 iq['privacy']['active']['name'] = name
67 iq.send(timeout=timeout, callback=callback,
68 timeout_callback=timeout_callback)
70 def deactivate(self, timeout=None, callback=None,
71 timeout_callback=None):
72 iq = self.xmpp.Iq()
73 iq['type'] = 'set'
74 iq['privacy'].enable('active')
75 iq.send(timeout=timeout, callback=callback,
76 timeout_callback=timeout_callback)
78 def make_default(self, name, timeout=None, callback=None,
79 timeout_callback=None):
80 iq = self.xmpp.Iq()
81 iq['type'] = 'set'
82 iq['privacy']['default']['name'] = name
83 iq.send(timeout=timeout, callback=callback,
84 timeout_callback=timeout_callback)
86 def remove_default(self, timeout=None, callback=None,
87 timeout_callback=None):
88 iq = self.xmpp.Iq()
89 iq['type'] = 'set'
90 iq['privacy'].enable('default')
91 iq.send(timeout=timeout, callback=callback,
92 timeout_callback=timeout_callback)
94 def edit_list(self, name, rules, timeout=None, callback=None,
95 timeout_callback=None):
96 iq = self.xmpp.Iq()
97 iq['type'] = 'set'
98 iq['privacy']['list']['name'] = name
99 priv_list = iq['privacy']['list']
101 if not rules:
102 rules = []
104 for rule in rules:
105 if isinstance(rule, Item):
106 priv_list.append(rule)
107 continue
109 priv_list.add_item(
110 rule['value'],
111 rule['action'],
112 rule['order'],
113 itype=rule.get('type', None),
114 iq=rule.get('iq', None),
115 message=rule.get('message', None),
116 presence_in=rule.get('presence_in',
117 rule.get('presence-in', None)),
118 presence_out=rule.get('presence_out',
119 rule.get('presence-out', None)))
121 def remove_list(self, name, timeout=None, callback=None,
122 timeout_callback=None):
123 iq = self.xmpp.Iq()
124 iq['type'] = 'set'
125 iq['privacy']['list']['name'] = name
126 iq.send(timeout=timeout, callback=callback,
127 timeout_callback=timeout_callback)