mod_mam/mod_mam.lua
changeset 1689 6b2122630b92
parent 1688 d20cfc5ba827
child 1690 cc3fad4198bc
equal deleted inserted replaced
1688:d20cfc5ba827 1689:6b2122630b92
   122 
   122 
   123 	-- Load all the data!
   123 	-- Load all the data!
   124 	local data, err = archive:find(origin.username, {
   124 	local data, err = archive:find(origin.username, {
   125 		start = qstart; ["end"] = qend; -- Time range
   125 		start = qstart; ["end"] = qend; -- Time range
   126 		with = qwith;
   126 		with = qwith;
   127 		limit = qmax;
   127 		limit = qmax + 1;
   128 		before = before; after = after;
   128 		before = before; after = after;
   129 		reverse = reverse;
   129 		reverse = reverse;
   130 		total = true;
   130 		total = true;
   131 	});
   131 	});
   132 
   132 
   139 	origin.send(st.reply(stanza))
   139 	origin.send(st.reply(stanza))
   140 	local msg_reply_attr = { to = stanza.attr.from, from = stanza.attr.to };
   140 	local msg_reply_attr = { to = stanza.attr.from, from = stanza.attr.to };
   141 
   141 
   142 	-- Wrap it in stuff and deliver
   142 	-- Wrap it in stuff and deliver
   143 	local fwd_st, first, last;
   143 	local fwd_st, first, last;
       
   144 	local count = 0;
       
   145 	local complete = "true";
   144 	for id, item, when in data do
   146 	for id, item, when in data do
       
   147 		count = count + 1;
       
   148 		if count > qmax then
       
   149 			complete = nil;
       
   150 			break;
       
   151 		end
   145 		fwd_st = st.message(msg_reply_attr)
   152 		fwd_st = st.message(msg_reply_attr)
   146 			:tag("result", { xmlns = xmlns_mam, queryid = qid, id = id })
   153 			:tag("result", { xmlns = xmlns_mam, queryid = qid, id = id })
   147 				:tag("forwarded", { xmlns = xmlns_forward })
   154 				:tag("forwarded", { xmlns = xmlns_forward })
   148 					:tag("delay", { xmlns = xmlns_delay, stamp = timestamp(when) }):up();
   155 					:tag("delay", { xmlns = xmlns_delay, stamp = timestamp(when) }):up();
   149 
   156 
   161 	-- That's all folks!
   168 	-- That's all folks!
   162 	module:log("debug", "Archive query %s completed", tostring(qid));
   169 	module:log("debug", "Archive query %s completed", tostring(qid));
   163 
   170 
   164 	if reverse then first, last = last, first; end
   171 	if reverse then first, last = last, first; end
   165 	origin.send(st.message(msg_reply_attr)
   172 	origin.send(st.message(msg_reply_attr)
   166 		:tag("fin", { xmlns = xmlns_mam, queryid = qid })
   173 		:tag("fin", { xmlns = xmlns_mam, queryid = qid, complete = complete })
   167 			:add_child(rsm.generate {
   174 			:add_child(rsm.generate {
   168 				first = first, last = last, count = count }));
   175 				first = first, last = last, count = count }));
   169 	return true;
   176 	return true;
   170 end);
   177 end);
   171 
   178