Mercurial > prosody-hg
comparison plugins/mod_mam/mod_mam.lua @ 13055:e732f9dfdfc8
mod_mam: port to use util.human.io.parse_duration
Updated by Zash, the original patch by Jonas had put the duration
parsing function in util.datetime but MattJ later did the same thing but
differently in f4d7fe919969
| author | Jonas Schäfer <jonas@wielicki.name> |
|---|---|
| date | Thu, 28 Apr 2022 20:38:40 +0200 |
| parents | 74b9e05af71e |
| children | 9c13c11b199d |
comparison
equal
deleted
inserted
replaced
| 13054:f4d7fe919969 | 13055:e732f9dfdfc8 |
|---|---|
| 34 | 34 |
| 35 local is_stanza = st.is_stanza; | 35 local is_stanza = st.is_stanza; |
| 36 local tostring = tostring; | 36 local tostring = tostring; |
| 37 local time_now = require "prosody.util.time".now; | 37 local time_now = require "prosody.util.time".now; |
| 38 local m_min = math.min; | 38 local m_min = math.min; |
| 39 local timestamp, datestamp = import("prosody.util.datetime", "datetime", "date"); | 39 local timestamp, datestamp = import( "util.datetime", "datetime", "date"); |
| 40 local parse_duration = require "util.human.io".parse_duration; | |
| 40 local default_max_items, max_max_items = 20, module:get_option_number("max_archive_query_results", 50); | 41 local default_max_items, max_max_items = 20, module:get_option_number("max_archive_query_results", 50); |
| 41 local strip_tags = module:get_option_set("dont_archive_namespaces", { "http://jabber.org/protocol/chatstates" }); | 42 local strip_tags = module:get_option_set("dont_archive_namespaces", { "http://jabber.org/protocol/chatstates" }); |
| 42 | 43 |
| 43 local archive_store = module:get_option_string("archive_store", "archive"); | 44 local archive_store = module:get_option_string("archive_store", "archive"); |
| 44 local archive = module:open_store(archive_store, "archive"); | 45 local archive = module:open_store(archive_store, "archive"); |
| 508 | 509 |
| 509 if cleanup_after ~= "never" then | 510 if cleanup_after ~= "never" then |
| 510 local cleanup_storage = module:open_store("archive_cleanup"); | 511 local cleanup_storage = module:open_store("archive_cleanup"); |
| 511 local cleanup_map = module:open_store("archive_cleanup", "map"); | 512 local cleanup_map = module:open_store("archive_cleanup", "map"); |
| 512 | 513 |
| 513 local day = 86400; | 514 local cleanup_after_seconds, parse_err = parse_duration(cleanup_after); |
| 514 local multipliers = { d = day, w = day * 7, m = 31 * day, y = 365.2425 * day }; | 515 if parse_err ~= nil then |
| 515 local n, m = cleanup_after:lower():match("(%d+)%s*([dwmy]?)"); | 516 module:log("error", "Could not parse archive_expires_after string %q: %s", cleanup_after, parse_err); |
| 516 if not n then | |
| 517 module:log("error", "Could not parse archive_expires_after string %q", cleanup_after); | |
| 518 return false; | 517 return false; |
| 519 end | 518 end |
| 520 | 519 cleanup_after = cleanup_after_seconds; |
| 521 cleanup_after = tonumber(n) * ( multipliers[m] or 1 ); | |
| 522 | 520 |
| 523 module:log("debug", "archive_expires_after = %d -- in seconds", cleanup_after); | 521 module:log("debug", "archive_expires_after = %d -- in seconds", cleanup_after); |
| 524 | 522 |
| 525 if not archive.delete then | 523 if not archive.delete then |
| 526 module:log("error", "archive_expires_after set but mod_%s does not support deleting", archive._provided_by); | 524 module:log("error", "archive_expires_after set but mod_%s does not support deleting", archive._provided_by); |
