Mercurial > prosody-modules
comparison mod_mam/mod_mam.lua @ 1682:6b2122630b92
mod_mam: Support the mandatory 'complete' attribute by requesting one extra item from storage
| author | Kim Alvefur <zash@zash.se> |
|---|---|
| date | Sun, 03 May 2015 13:21:15 +0200 |
| parents | d20cfc5ba827 |
| children | cc3fad4198bc |
comparison
equal
deleted
inserted
replaced
| 1681:d20cfc5ba827 | 1682: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 |
