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.
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
):
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
, timeout
=None, callback
=None,
33 timeout_callback
=None):
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):
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):
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):
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):
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):
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):
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):
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):
98 iq
['privacy']['list']['name'] = name
99 priv_list
= iq
['privacy']['list']
105 if isinstance(rule
, Item
):
106 priv_list
.append(rule
)
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):
125 iq
['privacy']['list']['name'] = name
126 iq
.send(timeout
=timeout
, callback
=callback
,
127 timeout_callback
=timeout_callback
)