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.
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
):
19 description
= 'XEP-0016: Privacy Lists'
20 dependencies
= set(['xep_0030'])
23 def plugin_init(self
):
24 register_stanza_plugin(Iq
, Privacy
)
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):
36 return iq
.send(block
=block
, timeout
=timeout
, callback
=callback
)
38 def get_list(self
, name
, block
=True, timeout
=None, callback
=None):
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):
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):
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):
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):
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):
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):
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):
83 iq
['privacy']['list']['name'] = name
84 priv_list
= iq
['privacy']['list']
90 if isinstance(rule
, Item
):
91 priv_list
.append(rule
)
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):
109 iq
['privacy']['list']['name'] = name
110 return iq
.send(block
=block
, timeout
=timeout
, callback
=callback
)