Software /
code /
verse
Diff
plugins/archive.lua @ 304:e09ae2395d41
squishy, plugins.archive: Fetch RSM lib from prosody-modules and use.
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Fri, 08 Jun 2012 21:39:01 +0200 |
parent | 303:0dda04d5eb84 |
child | 305:4a0206505b9d |
line wrap: on
line diff
--- a/plugins/archive.lua Fri Jun 08 06:44:20 2012 +0200 +++ b/plugins/archive.lua Fri Jun 08 21:39:01 2012 +0200 @@ -10,7 +10,9 @@ local uuid = require "util.uuid".generate; local parse_datetime = require "util.datetime".parse; local datetime = require "util.datetime".datetime; +local rsm = require "util.rsm"; local tonumber = tonumber; +local NULL = {}; function verse.plugins.archive(stream) function stream:query_archive(where, query_params, callback) @@ -30,6 +32,11 @@ if qend then query_st:tag("end"):text(datetime(qend)):up(); end + query_params["start"], query_params["end"], query_params["with"] = nil, nil, nil; + + if next(query_params) then + query_st:add_child(rsm.generate(query_params)); + end local results = {}; local function handle_archived_message(message) @@ -51,6 +58,8 @@ self:hook("message", handle_archived_message, 1); self:send_iq(query_st, function(reply) self:unhook("message", handle_archived_message); + local rset = reply.tags[1] and rsm.get(reply.tags[1]); + for k,v in pairs(rset or NULL) do results[k]=v; end callback(reply.attr.type == "result" and #results, results); return true end);