Mercurial > prosody-modules
view mod_archive/mod_archive.lua @ 159:9a37898f4f7c
mod_archive: Added features: Determining Server Support & Determining Preferences
author | shinysky<shinysky1986(AT)gmail.com> |
---|---|
date | Sat, 29 May 2010 22:02:36 +0800 |
parents | 86c28405c5da |
children | fd8d76daad97 |
line wrap: on
line source
-- Prosody IM -- 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);