plugins/private.lua

changeset 155
9c9af7a196ed
parent 149
f5c524412939
child 250
a5ac643a7fd6
equal deleted inserted replaced
153:f7c705485a2a 155:9c9af7a196ed
1 -- Implements XEP-0049: Private XML Storage
2
1 local xmlns_private = "jabber:iq:private"; 3 local xmlns_private = "jabber:iq:private";
2 4
3 function verse.plugins.private(stream) 5 function verse.plugins.private(stream)
4 function stream:private_set(name, xmlns, data, callback) 6 function stream:private_set(name, xmlns, data, callback)
5 local iq = verse.iq({ type = "set" }) 7 local iq = verse.iq({ type = "set" })
6 :tag("query", { xmlns = xmlns_private }) 8 :tag("query", { xmlns = xmlns_private });
7 :tag(name, { xmlns = xmlns }); 9 if data then
8 if data then iq:add_child(data); end 10 if data.name == name and data.attr and data.attr.xmlns == xmlns then
9 self:send_iq(iq, function () callback(); end); 11 iq:add_child(data);
12 else
13 iq:tag(name, { xmlns = xmlns })
14 :add_child(data);
15 end
16 end
17 self:send_iq(iq, callback);
10 end 18 end
11 19
12 function stream:private_get(name, xmlns, callback) 20 function stream:private_get(name, xmlns, callback)
13 self:send_iq(verse.iq({type="get"}) 21 self:send_iq(verse.iq({type="get"})
14 :tag("query", { xmlns = xmlns_private }) 22 :tag("query", { xmlns = xmlns_private })

mercurial