Mercurial > prosody-modules
changeset 4743:0a501df823fd
mod_rest: Add some convenience mapping to make MAM queries easier
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Thu, 04 Nov 2021 20:04:13 +0100 |
parents | b7df2c61a144 |
children | f478855f4565 |
files | mod_rest/jsonmap.lib.lua |
diffstat | 1 files changed, 34 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/mod_rest/jsonmap.lib.lua Thu Nov 04 20:03:36 2021 +0100 +++ b/mod_rest/jsonmap.lib.lua Thu Nov 04 20:04:13 2021 +0100 @@ -384,6 +384,7 @@ ping = "iq", version = "iq", command = "iq", + archive = "iq", body = "message", html = "message", @@ -496,6 +497,39 @@ t_type = "get"; end + -- XEP-0313 conveninece mapping + if kind == "iq" and t_type == "set" and type(t.archive) == "table" and not t.archive.form then + local archive = t.archive; + if archive["with"] or archive["start"] or archive["end"] or archive["before-id"] or archive["after-id"] + or archive["ids"] then + archive.form = { + type = "submit"; + fields = { + { var = "FORM_TYPE"; values = { "urn:xmpp:mam:2" } }; + { var = "with"; values = { archive["with"] } }; + { var = "start"; values = { archive["start"] } }; + { var = "end"; values = { archive["end"] } }; + { var = "before-id"; values = { archive["before-id"] } }; + { var = "after-id"; values = { archive["after-id"] } }; + { var = "ids"; values = archive["ids"] }; + }; + }; + archive["with"] = nil; + archive["start"] = nil; + archive["end"] = nil; + archive["before-id"] = nil; + archive["after-id"] = nil; + archive["ids"] = nil; + end + + if archive["after"] or archive["before"] or archive["max"] then + archive.page = { after = archive["after"]; before = archive["before"]; max = tonumber(archive["max"]) } + archive["after"] = nil; + archive["before"] = nil; + archive["max"] = nil; + end + end + local s = map.unparse(schema.properties[kind or "message"], t); s.attr.type = t_type;