Mercurial > prosody-modules
comparison mod_storage_xmlarchive/mod_storage_xmlarchive.lua @ 1742:ec50cecc9318
mod_storage_xmlarchive: Store timestamps in text form, I don't trust numeric timestamps in Lua
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Mon, 18 May 2015 02:46:41 +0200 |
parents | 07ceaf5f6f0d |
children | 3f3689a16133 |
comparison
equal
deleted
inserted
replaced
1741:07ceaf5f6f0d | 1742:ec50cecc9318 |
---|---|
48 ok, err = fallocate(f, offset, #data); if not ok then return nil, err; end | 48 ok, err = fallocate(f, offset, #data); if not ok then return nil, err; end |
49 ok, err = f:write(data); if not ok then return nil, err; end | 49 ok, err = f:write(data); if not ok then return nil, err; end |
50 ok, err = f:close(); if not ok then return nil, err; end | 50 ok, err = f:close(); if not ok then return nil, err; end |
51 | 51 |
52 local id = day .. "-" .. hmac_sha256(username.."@"..day.."+"..offset, data, true):sub(-16); | 52 local id = day .. "-" .. hmac_sha256(username.."@"..day.."+"..offset, data, true):sub(-16); |
53 ok, err = dm.list_append(username.."@"..day, module.host, self.store, { id = id, when = when, with = with, offset = offset, length = #data }); | 53 ok, err = dm.list_append(username.."@"..day, module.host, self.store, { id = id, when = dt.datetime(when), with = with, offset = offset, length = #data }); |
54 if not ok then return nil, err; end | 54 if not ok then return nil, err; end |
55 return id; | 55 return id; |
56 end | 56 end |
57 | 57 |
58 function archive:find(username, query) | 58 function archive:find(username, query) |
131 | 131 |
132 local q_with, q_start, q_end = query.with, query.start, query["end"]; | 132 local q_with, q_start, q_end = query.with, query.start, query["end"]; |
133 for i = first_item, last_item, step do | 133 for i = first_item, last_item, step do |
134 local item = items[i]; | 134 local item = items[i]; |
135 local i_when, i_with = item.when, item.with; | 135 local i_when, i_with = item.when, item.with; |
136 if type(i_when) == "string" then | |
137 i_when = dt.parse(i_when); | |
138 end | |
139 if type(i_when) ~= "number" then | |
140 module:log("warn", "data[%q][%d].when is invalid", dates[d], i); | |
141 break; | |
142 end | |
136 if not item then | 143 if not item then |
137 module:log("warn", "data[%q][%d] is nil", dates[d], i); | 144 module:log("warn", "data[%q][%d] is nil", dates[d], i); |
138 break; | 145 break; |
139 end | 146 end |
140 if xmlfile and in_range | 147 if xmlfile and in_range |