Changeset

1711:00ad2488ef0b

Removed util/discohelper.lua
author Waqas Hussain <waqas20@gmail.com>
date Tue, 18 Aug 2009 12:58:34 +0500
parents 1710:d7adeb81b2e8
children 1712:45a81d6d8777
files util/discohelper.lua
diffstat 1 files changed, 0 insertions(+), 89 deletions(-) [+]
line wrap: on
line diff
--- a/util/discohelper.lua	Tue Aug 18 12:57:00 2009 +0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -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;