aboutsummaryrefslogtreecommitdiffstats
path: root/util/discohelper.lua
diff options
context:
space:
mode:
authorMatthew Wild <mwild1@gmail.com>2009-08-18 13:03:35 +0100
committerMatthew Wild <mwild1@gmail.com>2009-08-18 13:03:35 +0100
commit4b1f3c9e4ae2aaca4934660f5b5259ef46eea6f7 (patch)
treeb70a070f34bd849d2e53290b5c9c4354758ed84c /util/discohelper.lua
parentb5d5ab2446bacedb0ba7e4509f6ea45426b8bc5a (diff)
parentdae72952d261b285282add61ba0ea9be9cdaa22a (diff)
downloadprosody-4b1f3c9e4ae2aaca4934660f5b5259ef46eea6f7.tar.gz
prosody-4b1f3c9e4ae2aaca4934660f5b5259ef46eea6f7.zip
Merge waqas with Tobias. Eww.
Diffstat (limited to 'util/discohelper.lua')
-rw-r--r--util/discohelper.lua89
1 files changed, 0 insertions, 89 deletions
diff --git a/util/discohelper.lua b/util/discohelper.lua
deleted file mode 100644
index 5d9bf287..00000000
--- a/util/discohelper.lua
+++ /dev/null
@@ -1,89 +0,0 @@
--- Prosody IM
--- Copyright (C) 2008-2009 Matthew Wild
--- Copyright (C) 2008-2009 Waqas Hussain
---
--- This project is MIT/X11 licensed. Please see the
--- COPYING file in the source package for more information.
---
-
-
-
-local t_insert = table.insert;
-local jid_split = require "util.jid".split;
-local ipairs = ipairs;
-local st = require "util.stanza";
-
-module "discohelper";
-
-local function addDiscoItemsHandler(self, jid, func)
- if self.item_handlers[jid] then
- t_insert(self.item_handlers[jid], func);
- else
- self.item_handlers[jid] = {func};
- end
-end
-
-local function addDiscoInfoHandler(self, jid, func)
- if self.info_handlers[jid] then
- t_insert(self.info_handlers[jid], func);
- else
- self.info_handlers[jid] = {func};
- end
-end
-
-local function handle(self, stanza)
- if stanza.name == "iq" and stanza.tags[1].name == "query" then
- local query = stanza.tags[1];
- local to = stanza.attr.to;
- local from = stanza.attr.from
- local node = query.attr.node or "";
- local to_node, to_host = jid_split(to);
-
- local reply = st.reply(stanza):query(query.attr.xmlns);
- local handlers;
- if query.attr.xmlns == "http://jabber.org/protocol/disco#info" then -- select handler set
- handlers = self.info_handlers;
- elseif query.attr.xmlns == "http://jabber.org/protocol/disco#items" then
- handlers = self.item_handlers;
- end
- local handler;
- local found; -- to keep track of any handlers found
- if to_node then -- handlers which get called always
- handler = handlers["*node"];
- else
- handler = handlers["*host"];
- end
- if handler then -- call always called handler
- for _, h in ipairs(handler) do
- if h(reply, to, from, node) then found = true; end
- end
- end
- handler = handlers[to]; -- get the handler
- if not handler then -- if not found then use default handler
- if to_node then
- handler = handlers["*defaultnode"];
- else
- handler = handlers["*defaulthost"];
- end
- end
- if handler then
- for _, h in ipairs(handler) do
- if h(reply, to, from, node) then found = true; end
- end
- end
- if found then return reply; end -- return the reply if there was one
- return st.error_reply(stanza, "cancel", "service-unavailable");
- end
-end
-
-function new()
- return {
- item_handlers = {};
- info_handlers = {};
- addDiscoItemsHandler = addDiscoItemsHandler;
- addDiscoInfoHandler = addDiscoInfoHandler;
- handle = handle;
- };
-end
-
-return _M;