From f49818be06315e5b7a1fd66d288a5a0572aa17e6 Mon Sep 17 00:00:00 2001
From: Lance Stout <lancestout@gmail.com>
Date: Wed, 20 Jun 2012 23:37:39 -0700
Subject: Add support for XEP-0186: Invisible Command

---
 sleekxmpp/plugins/__init__.py                   |  1 +
 sleekxmpp/plugins/xep_0186/__init__.py          | 16 +++++++++
 sleekxmpp/plugins/xep_0186/invisible_command.py | 44 +++++++++++++++++++++++++
 sleekxmpp/plugins/xep_0186/stanza.py            | 23 +++++++++++++
 4 files changed, 84 insertions(+)
 create mode 100644 sleekxmpp/plugins/xep_0186/__init__.py
 create mode 100644 sleekxmpp/plugins/xep_0186/invisible_command.py
 create mode 100644 sleekxmpp/plugins/xep_0186/stanza.py

(limited to 'sleekxmpp')

diff --git a/sleekxmpp/plugins/__init__.py b/sleekxmpp/plugins/__init__.py
index 29964bb7..65a3b7dc 100644
--- a/sleekxmpp/plugins/__init__.py
+++ b/sleekxmpp/plugins/__init__.py
@@ -45,6 +45,7 @@ __all__ = [
     'xep_0163',  # Personal Eventing Protocol
     'xep_0172',  # User Nickname
     'xep_0184',  # Message Receipts
+    'xep_0186',  # Invisible Command
     'xep_0198',  # Stream Management
     'xep_0199',  # Ping
     'xep_0202',  # Entity Time
diff --git a/sleekxmpp/plugins/xep_0186/__init__.py b/sleekxmpp/plugins/xep_0186/__init__.py
new file mode 100644
index 00000000..c9b8c6b9
--- /dev/null
+++ b/sleekxmpp/plugins/xep_0186/__init__.py
@@ -0,0 +1,16 @@
+"""
+    SleekXMPP: The Sleek XMPP Library
+    Copyright (C) 2012 Nathanael C. Fritz, Lance J.T. Stout
+    This file is part of SleekXMPP.
+
+    See the file LICENSE for copying permission.
+"""
+
+from sleekxmpp.plugins.base import register_plugin
+
+from sleekxmpp.plugins.xep_0186 import stanza
+from sleekxmpp.plugins.xep_0186.stanza import Invisible, Visible
+from sleekxmpp.plugins.xep_0186.invisible_command import XEP_0186
+
+
+register_plugin(XEP_0186)
diff --git a/sleekxmpp/plugins/xep_0186/invisible_command.py b/sleekxmpp/plugins/xep_0186/invisible_command.py
new file mode 100644
index 00000000..15f63b2d
--- /dev/null
+++ b/sleekxmpp/plugins/xep_0186/invisible_command.py
@@ -0,0 +1,44 @@
+"""
+    SleekXMPP: The Sleek XMPP Library
+    Copyright (C) 2012 Nathanael C. Fritz, Lance J.T. Stout
+    This file is part of SleekXMPP.
+
+    See the file LICENSE for copying permission.
+"""
+
+import logging
+
+from sleekxmpp import Iq
+from sleekxmpp.plugins import BasePlugin
+from sleekxmpp.xmlstream import register_stanza_plugin
+from sleekxmpp.plugins.xep_0186 import stanza, Visible, Invisible
+
+
+log = logging.getLogger(__name__)
+
+
+class XEP_0186(BasePlugin):
+
+    name = 'xep_0186'
+    description = 'XEP-0186: Invisible Command'
+    dependencies = set(['xep_0030'])
+
+    def plugin_init(self):
+        register_stanza_plugin(Iq, Visible)
+        register_stanza_plugin(Iq, Invisible)
+
+    def set_invisible(self, ifrom=None, block=True, callback=None,
+                            timeout=None):
+        iq = self.xmpp.Iq()
+        iq['type'] = 'set'
+        iq['from'] = ifrom
+        iq.enable('invisible')
+        iq.send(block=block, callback=callback, timeout=timeout)
+
+    def set_visible(self, ifrom=None, block=True, callback=None,
+                          timeout=None):
+        iq = self.xmpp.Iq()
+        iq['type'] = 'set'
+        iq['from'] = ifrom
+        iq.enable('visible')
+        iq.send(block=block, callback=callback, timeout=timeout)
diff --git a/sleekxmpp/plugins/xep_0186/stanza.py b/sleekxmpp/plugins/xep_0186/stanza.py
new file mode 100644
index 00000000..aadbaa16
--- /dev/null
+++ b/sleekxmpp/plugins/xep_0186/stanza.py
@@ -0,0 +1,23 @@
+"""
+    SleekXMPP: The Sleek XMPP Library
+    Copyright (C) 2012 Nathanael C. Fritz, Lance J.T. Stout
+    This file is part of SleekXMPP.
+
+    See the file LICENSE for copying permission.
+"""
+
+from sleekxmpp.xmlstream import ElementBase, ET
+
+
+class Invisible(ElementBase):
+    name = 'invisible'
+    namespace = 'urn:xmpp:invisible:0'
+    plugin_attrib = 'invisible'
+    interfaces = set()
+
+
+class Visible(ElementBase):
+    name = 'visible'
+    namespace = 'urn:xmpp:visible:0'
+    plugin_attrib = 'visible'
+    interfaces = set()
-- 
cgit v1.2.3