Mercurial > prosody-hg
comparison plugins/mod_mam/mamprefsxml.lib.lua @ 7836:30fac9154fd4
mod_mam: Import from prosody-modules
| author | Kim Alvefur <zash@zash.se> |
|---|---|
| date | Fri, 04 Nov 2016 13:48:21 +0100 |
| parents | |
| children | f3e1925f29c2 |
comparison
equal
deleted
inserted
replaced
| 7835:a809dcfd0c5b | 7836:30fac9154fd4 |
|---|---|
| 1 -- XEP-0313: Message Archive Management for Prosody | |
| 2 -- Copyright (C) 2011-2013 Kim Alvefur | |
| 3 -- | |
| 4 -- This file is MIT/X11 licensed. | |
| 5 | |
| 6 local st = require"util.stanza"; | |
| 7 local xmlns_mam = "urn:xmpp:mam:0"; | |
| 8 | |
| 9 local default_attrs = { | |
| 10 always = true, [true] = "always", | |
| 11 never = false, [false] = "never", | |
| 12 roster = "roster", | |
| 13 } | |
| 14 | |
| 15 local function tostanza(prefs) | |
| 16 local default = prefs[false]; | |
| 17 default = default_attrs[default]; | |
| 18 local prefstanza = st.stanza("prefs", { xmlns = xmlns_mam, default = default }); | |
| 19 local always = st.stanza("always"); | |
| 20 local never = st.stanza("never"); | |
| 21 for jid, choice in pairs(prefs) do | |
| 22 if jid then | |
| 23 (choice and always or never):tag("jid"):text(jid):up(); | |
| 24 end | |
| 25 end | |
| 26 prefstanza:add_child(always):add_child(never); | |
| 27 return prefstanza; | |
| 28 end | |
| 29 local function fromstanza(prefstanza) | |
| 30 local prefs = {}; | |
| 31 local default = prefstanza.attr.default; | |
| 32 if default then | |
| 33 prefs[false] = default_attrs[default]; | |
| 34 end | |
| 35 | |
| 36 local always = prefstanza:get_child("always"); | |
| 37 if always then | |
| 38 for rule in always:childtags("jid") do | |
| 39 local jid = rule:get_text(); | |
| 40 prefs[jid] = true; | |
| 41 end | |
| 42 end | |
| 43 | |
| 44 local never = prefstanza:get_child("never"); | |
| 45 if never then | |
| 46 for rule in never:childtags("jid") do | |
| 47 local jid = rule:get_text(); | |
| 48 prefs[jid] = false; | |
| 49 end | |
| 50 end | |
| 51 | |
| 52 return prefs; | |
| 53 end | |
| 54 | |
| 55 return { | |
| 56 tostanza = tostanza; | |
| 57 fromstanza = fromstanza; | |
| 58 } |
