diff options
author | Te-je Rodgers <te-je@geniphi.com> | 2011-01-11 04:05:05 +0800 |
---|---|---|
committer | Lance Stout <lancestout@gmail.com> | 2011-01-11 04:11:05 +0800 |
commit | fe3f8dde4b4eb19e1c1213bb56d8678f25000f37 (patch) | |
tree | 9cb0706c3b2d01300deb243ca1f7a16e3d626afc /sleekxmpp/plugins/xep_0249/invite.py | |
parent | acdf9e2d22dd604578f50d0a9b67c47e001da69f (diff) | |
download | slixmpp-fe3f8dde4b4eb19e1c1213bb56d8678f25000f37.tar.gz slixmpp-fe3f8dde4b4eb19e1c1213bb56d8678f25000f37.tar.bz2 slixmpp-fe3f8dde4b4eb19e1c1213bb56d8678f25000f37.tar.xz slixmpp-fe3f8dde4b4eb19e1c1213bb56d8678f25000f37.zip |
added plugin for xep-0249
Diffstat (limited to 'sleekxmpp/plugins/xep_0249/invite.py')
-rw-r--r-- | sleekxmpp/plugins/xep_0249/invite.py | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/sleekxmpp/plugins/xep_0249/invite.py b/sleekxmpp/plugins/xep_0249/invite.py new file mode 100644 index 00000000..7c966f15 --- /dev/null +++ b/sleekxmpp/plugins/xep_0249/invite.py @@ -0,0 +1,75 @@ +"""Direct MUC Invitation.""" + + +import logging + +import sleekxmpp +from sleekxmpp import Message +from sleekxmpp.plugins.base import base_plugin +from sleekxmpp.xmlstream import register_stanza_plugin +from sleekxmpp.xmlstream.handler import Callback +from sleekxmpp.xmlstream.matcher import StanzaPath +from sleekxmpp.plugins.xep_0249 import Invite + +log = logging.getLogger(__name__) + + +class xep_0249(base_plugin): + + """ + XEP-0249: Direct MUC Invitations + """ + + def plugin_init(self): + self.xep = "0249" + self.description = "Direct MUC Invitations" + self.stanza = sleekxmpp.plugins.xep_0249.stanza + + self.xmpp.register_handler( + Callback('Direct MUC Invitations', + StanzaPath('message/groupchat_invite'), + self._handle_invite)) + + register_stanza_plugin(Message, Invite) + + def post_init(self): + base_plugin.post_init(self) + self.xmpp.plugin['xep_0030'].add_feature(Invite.namespace) + + def _handle_invite(self, message): + """ + Raise an event for all invitations received. + + """ + log.debug("Received direct muc invitation from %s to room %s", + message['from'], message['groupchat_invite']['jid']) + + self.xmpp.event('groupchat_direct_invite', message) + + def send_invitation(self, jid, roomjid, password=None, + reason=None, ifrom=None): + """ + Send a direct MUC invitation to an XMPP entity. + + Arguments: + jid -- The jid of the entity to which the inviation + is sent + roomjid -- the address of the groupchat room to be joined + password -- a password needed for entry into a + password-protected room (OPTIONAL). + reason -- a human-readable purpose for the invitation + (OPTIONAL). + + """ + + message = self.xmpp.Message() + message['to'] = jid + if ifrom is not None: + message['from'] = ifrom + message['groupchat_invite']['jid'] = roomjid + if password is not None: + message['groupchat_invite']['password'] = password + if reason is not None: + message['groupchat_invite']['reason'] = reason + + return message.send() |