mod_mam: Use util.dataforms timestamp validation
authorKim Alvefur <zash@zash.se>
Tue, 26 Oct 2021 13:31:40 +0200
changeset 11879 210a785dfa8a
parent 11878 84f4c6957d62
child 11880 52a1b885044e
mod_mam: Use util.dataforms timestamp validation
plugins/mod_mam/mod_mam.lua
--- a/plugins/mod_mam/mod_mam.lua	Mon Oct 25 21:45:46 2021 +0200
+++ b/plugins/mod_mam/mod_mam.lua	Tue Oct 26 13:31:40 2021 +0200
@@ -35,7 +35,7 @@
 local tostring = tostring;
 local time_now = os.time;
 local m_min = math.min;
-local timestamp, timestamp_parse, datestamp = import( "util.datetime", "datetime", "parse", "date");
+local timestamp, datestamp = import( "util.datetime", "datetime", "date");
 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" });
 
@@ -77,10 +77,10 @@
 end);
 
 local query_form = dataform {
-	{ name = "FORM_TYPE"; type = "hidden"; value = xmlns_mam; };
-	{ name = "with"; type = "jid-single"; };
-	{ name = "start"; type = "text-single" };
-	{ name = "end"; type = "text-single"; };
+	{ name = "FORM_TYPE"; type = "hidden"; value = xmlns_mam };
+	{ name = "with"; type = "jid-single" };
+	{ name = "start"; type = "text-single"; datatype = "xs:dateTime" };
+	{ name = "end"; type = "text-single"; datatype = "xs:dateTime" };
 };
 
 if archive.caps and archive.caps.full_id_range then
@@ -134,15 +134,6 @@
 		qwith = qwith and jid_bare(qwith); -- dataforms does jidprep
 	end
 
-	if qstart or qend then -- Validate timestamps
-		local vstart, vend = (qstart and timestamp_parse(qstart)), (qend and timestamp_parse(qend));
-		if (qstart and not vstart) or (qend and not vend) then
-			origin.send(st.error_reply(stanza, "modify", "bad-request", "Invalid timestamp"))
-			return true;
-		end
-		qstart, qend = vstart, vend;
-	end
-
 	-- RSM stuff
 	local qset = rsm.get(query);
 	local qmax = m_min(qset and qset.max or default_max_items, max_max_items);