--- a/mod_archive/mod_archive.lua Fri May 28 16:19:27 2010 -0400
+++ b/mod_archive/mod_archive.lua Sat May 29 22:02:36 2010 +0800
@@ -1,17 +1,94 @@
-- Prosody IM
--- Copyright (C) 2008-2010 Dai Zhiwei
+-- Copyright (C) 2010 Dai Zhiwei
--
-- This project is MIT/X11 licensed. Please see the
-- COPYING file in the source package for more information.
--
local st = require "util.stanza";
+local dm = require "util.datamanager"
module:add_feature("urn:xmpp:archive");
+module:add_feature("urn:xmpp:archive:auto");
+module:add_feature("urn:xmpp:archive:manage");
+module:add_feature("urn:xmpp:archive:manual");
+module:add_feature("urn:xmpp:archive:pref");
local function preferences_handler(event)
+ local origin, stanza = event.origin, event.stanza;
+ module:log("debug", "-- Enter preferences_handler()");
+ module:log("debug", "-- pref:\n%s", tostring(stanza));
+ if stanza.attr.type == "get" then
+ -- dm.store(origin.username, origin.host, "archive_prefs", st.preserialize(reply.tags[1]));
+ local data = st.deserialize(dm.load(origin.username, origin.host, "archive_prefs"));
+ if data then
+ origin.send(st.reply(stanza):add_child(data));
+ else
+ local reply = st.reply(stanza):tag('pref', {xmlns='urn:xmpp:archive'});
+ reply:tag('default', {otr='concede', save='false', unset='true'}):up();
+ reply:tag('method', {type='auto', use='concede'}):up();
+ reply:tag('method', {type='local', use='concede'}):up();
+ reply:tag('method', {type='manual', use='concede'}):up();
+ reply:tag('auto', {save='false'}):up();
+ origin.send(reply);
+ -- origin.send(st.reply(stanza));
+ end
+ return true;
+ elseif stanza.attr.type == "set" then
+ return false;
+ end
+end
+
+local function auto_handler(event)
+ module:log("debug", "-- stanza:\n%s", tostring(event.stanza));
+ if event.stanza.attr.type == "set" then
+ event.origin.send(st.error_reply(event.stanza, "cancel", "feature-not-implemented"));
+ return true;
+ end
+end
+
+local function chat_handler(event)
+ module:log("debug", "-- stanza:\n%s", tostring(event.stanza));
+ return true;
+end
+
+local function itemremove_handler(event)
+ module:log("debug", "-- stanza:\n%s", tostring(event.stanza));
+ return true;
+end
+
+local function list_handler(event)
+ module:log("debug", "-- stanza:\n%s", tostring(event.stanza));
+ return true;
+end
+
+local function modified_handler(event)
+ module:log("debug", "-- stanza:\n%s", tostring(event.stanza));
+ return true;
+end
+
+local function remove_handler(event)
+ module:log("debug", "-- stanza:\n%s", tostring(event.stanza));
+ return true;
+end
+
+local function retrieve_handler(event)
+ module:log("debug", "-- stanza:\n%s", tostring(event.stanza));
+ return true;
+end
+
+local function save_handler(event)
+ module:log("debug", "-- stanza:\n%s", tostring(event.stanza));
return true;
end
module:hook("iq/self/urn:xmpp:archive:pref", preferences_handler);
+module:hook("iq/self/urn:xmpp:archive:auto", auto_handler);
+module:hook("iq/self/urn:xmpp:archive:chat", chat_handler);
+module:hook("iq/self/urn:xmpp:archive:itemremove", itemremove_handler);
+module:hook("iq/self/urn:xmpp:archive:list", list_handler);
+module:hook("iq/self/urn:xmpp:archive:modified", modified_handler);
+module:hook("iq/self/urn:xmpp:archive:remove", remove_handler);
+module:hook("iq/self/urn:xmpp:archive:retrieve", retrieve_handler);
+module:hook("iq/self/urn:xmpp:archive:save", save_handler);