comparison mod_group_bookmarks/mod_group_bookmarks.lua @ 3260:9bb317400c4c

mod_group_bookmarks: Use iq-get event instead of checking for stanza.attr.type == "get".
author Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
date Fri, 24 Aug 2018 19:34:30 +0200
parents 6824a1f3d8c0
children c2b1f64aaf97
comparison
equal deleted inserted replaced
3259:6824a1f3d8c0 3260:9bb317400c4c
40 end 40 end
41 end 41 end
42 return data; 42 return data;
43 end 43 end
44 44
45 module:hook("iq/self/jabber:iq:private:query", function(event) 45 module:hook("iq-get/self/jabber:iq:private:query", function(event)
46 local origin, stanza = event.origin, event.stanza; 46 local origin, stanza = event.origin, event.stanza;
47 local type = stanza.attr.type;
48 local query = stanza.tags[1]; 47 local query = stanza.tags[1];
49 if #query.tags == 1 then 48 if #query.tags == 1 then
50 local tag = query.tags[1]; 49 local tag = query.tags[1];
51 local key = tag.name..":"..tag.attr.xmlns; 50 local key = tag.name..":"..tag.attr.xmlns;
52 local data, err = dm_load(origin.username, origin.host, "private"); 51 local data, err = dm_load(origin.username, origin.host, "private");
53 if err then 52 if err then
54 origin.send(st.error_reply(stanza, "wait", "internal-server-error")); 53 origin.send(st.error_reply(stanza, "wait", "internal-server-error"));
55 return true; 54 return true;
56 end 55 end
57 if stanza.attr.type == "get" then 56 local data = data and data[key];
58 local data = data and data[key]; 57 if (not data) and key == "storage:storage:bookmarks" then
59 if (not data) and key == "storage:storage:bookmarks" then 58 data = st.stanza("storage", { xmlns = "storage:bookmarks" });
60 data = st.stanza("storage", { xmlns = "storage:bookmarks" }); 59 end
60 if data then
61 data = st.deserialize(data);
62 if key == "storage:storage:bookmarks" then
63 data = inject_bookmarks(origin.username, origin.host, data);
61 end 64 end
62 if data then 65 origin.send(st.reply(stanza):tag("query", {xmlns = "jabber:iq:private"})
63 data = st.deserialize(data); 66 :add_child(data));
64 if key == "storage:storage:bookmarks" then 67 else
65 data = inject_bookmarks(origin.username, origin.host, data); 68 origin.send(st.reply(stanza):add_child(stanza.tags[1]));
66 end
67 origin.send(st.reply(stanza):tag("query", {xmlns = "jabber:iq:private"})
68 :add_child(data));
69 else
70 origin.send(st.reply(stanza):add_child(stanza.tags[1]));
71 end
72 return true;
73 end 69 end
70 return true;
74 end 71 end
75 end, 1); 72 end, 1);
76 73
77 function module.load() 74 function module.load()
78 bookmarks_file = module:get_option_string("group_bookmarks_file"); 75 bookmarks_file = module:get_option_string("group_bookmarks_file");