aboutsummaryrefslogtreecommitdiffstats
path: root/plugin.py
diff options
context:
space:
mode:
Diffstat (limited to 'plugin.py')
-rw-r--r--plugin.py61
1 files changed, 0 insertions, 61 deletions
diff --git a/plugin.py b/plugin.py
deleted file mode 100644
index df05908..0000000
--- a/plugin.py
+++ /dev/null
@@ -1,61 +0,0 @@
-import logging
-import base64
-from xml.etree import cElementTree as ET
-
-from sleekxmpp.xmlstream.stanzabase import ElementBase, register_stanza_plugin
-from sleekxmpp.plugins import base
-from sleekxmpp.xmlstream.handler.callback import Callback
-from sleekxmpp.xmlstream.matcher.xpath import MatchXPath
-from sleekxmpp.stanza.iq import Iq
-
-import object
-
-class AliasQuery(ElementBase):
- namespace = 'alias:query'
- name = 'query'
- plugin_attrib = 'alias'
- interfaces = set(('node', 'type', 'items', 'object'))
- sub_interfaces = set(('items'))
-
- def addItem(self, node, permission = None):
- item = AliasItem(None, self)
- item['node'] = node
- if permission is not None:
- item['permission'] = permission
-
-class AliasItem(ElementBase):
- namespace = 'alias:query'
- name = 'item'
- plugin_attrib = 'item'
- interfaces = set(('node', 'permission'))
-
-class AliasPlugin(base.base_plugin):
-
- def plugin_init(self):
- self.description = 'Plugin to handle alias queries'
- register_stanza_plugin(Iq, AliasQuery)
- query_parser = MatchXPath('{{{}}}iq/{{{}}}query'.format(self.xmpp.default_ns,
- AliasQuery.namespace))
- self.xmpp.register_handler(Callback('Alias queries', query_parser,
- self.handle_alias_query))
-
- def post_init(self):
- base.base_plugin.post_init(self)
- self.xmpp.plugin['xep_0030'].add_feature("alias:query")
-
- def handle_alias_query(self, iq):
- callee = base64.b64decode(iq['to'].user)
- caller = iq['alias']['from']
- handler = object.ObjectHandler(callee)
- node = iq['alias']['node']
- if not node:
- node = handler.get_home_node()
- if iq['alias']['type'] == 'items':
- logging.debug('childs of {} requested'.format(node))
- childs = handler.get_child_list(node, caller)
- reply = AliasQuery()
- reply['node'] = node
- reply['type'] = 'items'
- for child in childs:
- reply.addItem(child, "test")
- iq.reply().set_payload(reply).send() \ No newline at end of file