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 local parse_datetime = require "util.datetime".parse; |
|
12 local datetime = require "util.datetime".datetime; |
|
13 local tonumber = tonumber; |
12 |
14 |
13 function verse.plugins.archive(stream) |
15 function verse.plugins.archive(stream) |
14 function stream:query_archive(where, query_params, callback) |
16 function stream:query_archive(where, query_params, callback) |
15 local queryid = uuid(); |
17 local queryid = uuid(); |
16 local query_st = st.iq{ type="get", to = where } |
18 local query_st = st.iq{ type="get", to = where } |
17 :tag("query", { xmlns = xmlns_mam, queryid = queryid }); |
19 :tag("query", { xmlns = xmlns_mam, queryid = queryid }); |
18 |
20 |
19 local params = { "with", "start", "end" }; |
21 local qwith = query_params["with"]; |
20 local query_params = query_params or {}; |
22 if qwith then |
21 for i=1,#params do |
23 query_st:tag("with"):text(qwith):up(); |
22 local k = params[i]; |
24 end |
23 if query_params[k] then |
25 |
24 query_st:tag(k):text(query_params[k]):up(); |
26 local qstart, qend = tonumber(query_params["start"]), tonumber(query_params["end"]); |
25 end |
27 if qstart then |
|
28 query_st:tag("start"):text(datetime(qstart)):up(); |
|
29 end |
|
30 if qend then |
|
31 query_st:tag("end"):text(datetime(qend)):up(); |
26 end |
32 end |
27 |
33 |
28 local results = {}; |
34 local results = {}; |
29 local function handle_archived_message(message) |
35 local function handle_archived_message(message) |
30 local result_tag = message:get_child("result", xmlns_mam); |
36 local result_tag = message:get_child("result", xmlns_mam); |