diff 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
line wrap: on
line diff
--- a/plugins/mod_mam/mod_mam.lua	Fri Apr 07 14:14:53 2023 +0100
+++ b/plugins/mod_mam/mod_mam.lua	Thu Apr 28 20:38:40 2022 +0200
@@ -36,7 +36,8 @@
 local tostring = tostring;
 local time_now = require "prosody.util.time".now;
 local m_min = math.min;
-local timestamp, datestamp = import("prosody.util.datetime", "datetime", "date");
+local timestamp, datestamp = import( "util.datetime", "datetime", "date");
+local parse_duration = require "util.human.io".parse_duration;
 local default_max_items, max_max_items = 20, module:get_option_number("max_archive_query_results", 50);
 local strip_tags = module:get_option_set("dont_archive_namespaces", { "http://jabber.org/protocol/chatstates" });
 
@@ -510,15 +511,12 @@
 	local cleanup_storage = module:open_store("archive_cleanup");
 	local cleanup_map = module:open_store("archive_cleanup", "map");
 
-	local day = 86400;
-	local multipliers = { d = day, w = day * 7, m = 31 * day, y = 365.2425 * day };
-	local n, m = cleanup_after:lower():match("(%d+)%s*([dwmy]?)");
-	if not n then
-		module:log("error", "Could not parse archive_expires_after string %q", cleanup_after);
+	local cleanup_after_seconds, parse_err = parse_duration(cleanup_after);
+	if parse_err ~= nil then
+		module:log("error", "Could not parse archive_expires_after string %q: %s", cleanup_after, parse_err);
 		return false;
 	end
-
-	cleanup_after = tonumber(n) * ( multipliers[m] or 1 );
+	cleanup_after = cleanup_after_seconds;
 
 	module:log("debug", "archive_expires_after = %d -- in seconds", cleanup_after);