Mercurial > prosody-modules
view mod_default_bookmarks/mod_default_bookmarks.lua @ 737:e4ea03b060ed
mod_archive: switch from/to
The XEP-0136 is not very explicit about the meening of <from> and <to>
elements, but the examples are clear: <from> means it comes from the user in
the 'with' attribute of the collection.
That is the opposite of what is currently implemented in that module.
So for better compatibility with complient clients, this switch the 'from' and
'to' fields
| author | Olivier Goffart <ogoffart@woboq.com> |
|---|---|
| date | Wed, 04 Jul 2012 14:08:43 +0200 |
| parents | 597c872d691e |
| children | 853a382c9bd6 |
line wrap: on
line source
-- Prosody IM -- Copyright (C) 2008-2010 Matthew Wild -- Copyright (C) 2008-2010 Waqas Hussain -- Copyright (C) 2011 Kim Alvefur -- -- 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_load = require "util.datamanager".load local jid_split = require "util.jid".split module:hook("iq/self/jabber:iq:private:query", function(event) local origin, stanza = event.origin, event.stanza; local typ = stanza.attr.type; local from = stanza.attr.from; local query = stanza.tags[1]; if #query.tags == 1 and typ == "get" then local tag = query.tags[1]; local key = tag.name..":"..tag.attr.xmlns; if key == "storage:storage:bookmarks" then local data, err = dm_load(origin.username, origin.host, "private"); if not(data and data[key]) then local bookmarks = module:get_option("default_bookmarks"); if bookmarks and #bookmarks > 0 then local reply = st.reply(stanza):tag("query", {xmlns = "jabber:iq:private"}) :tag("storage", { xmlns = "storage:bookmarks" }); local nick = jid_split(from); for i=1,#bookmarks do local bookmark = bookmarks[i]; if type(bookmark) ~= "table" then -- assume it's only a jid bookmark = { jid = bookmark, name = jid_split(bookmark) }; end reply:tag("conference", { jid = bookmark.jid, name = bookmark.name, autojoin = "1", }):tag("nick"):text(nick):up():up(); end origin.send(reply); return true; end end end end end, 1);
