plugins/archive.lua

changeset 297
447dffdaf46c
parent 296
78ddfd30c74e
child 303
0dda04d5eb84
equal deleted inserted replaced
296:78ddfd30c74e 297:447dffdaf46c
6 local st = require "util.stanza"; 6 local st = require "util.stanza";
7 local xmlns_mam = "urn:xmpp:mam:tmp" 7 local xmlns_mam = "urn:xmpp:mam:tmp"
8 local xmlns_forward = "urn:xmpp:forward:0"; 8 local xmlns_forward = "urn:xmpp:forward:0";
9 local xmlns_delay = "urn:xmpp:delay"; 9 local xmlns_delay = "urn:xmpp:delay";
10 local uuid = require "util.uuid".generate; 10 local uuid = require "util.uuid".generate;
11 local parse_datetime = require "util.datetime".parse;
11 12
12 function verse.plugins.archive(stream) 13 function verse.plugins.archive(stream)
13 function stream:query_archive(where, query_params, callback) 14 function stream:query_archive(where, query_params, callback)
14 local queryid = uuid(); 15 local queryid = uuid();
15 local query_st = st.iq{ type="get", to = where } 16 local query_st = st.iq{ type="get", to = where }
30 if result_tag and result_tag.attr.queryid == queryid then 31 if result_tag and result_tag.attr.queryid == queryid then
31 local forwarded = message:get_child("forwarded", xmlns_forward); 32 local forwarded = message:get_child("forwarded", xmlns_forward);
32 33
33 local id = result_tag.attr.id; 34 local id = result_tag.attr.id;
34 local delay = forwarded:get_child("delay", xmlns_delay); 35 local delay = forwarded:get_child("delay", xmlns_delay);
35 local stamp = delay and delay.attr.stamp or nil; 36 local stamp = delay and parse_datetime(delay.attr.stamp) or nil;
36 37
37 local message = forwarded:get_child("message", "jabber:client") 38 local message = forwarded:get_child("message", "jabber:client")
38 39
39 results[#results+1] = { id = id, stamp = stamp, message = message }; 40 results[#results+1] = { id = id, stamp = stamp, message = message };
40 return true 41 return true

mercurial