diff options
Diffstat (limited to 'plugins')
-rw-r--r-- | plugins/mod_mam/mod_mam.lua | 2 | ||||
-rw-r--r-- | plugins/mod_mam/rsm.lib.lua | 87 |
2 files changed, 1 insertions, 88 deletions
diff --git a/plugins/mod_mam/mod_mam.lua b/plugins/mod_mam/mod_mam.lua index fe69e333..39d1bcf5 100644 --- a/plugins/mod_mam/mod_mam.lua +++ b/plugins/mod_mam/mod_mam.lua @@ -9,7 +9,7 @@ local xmlns_forward = "urn:xmpp:forward:0"; local um = require "core.usermanager"; local st = require "util.stanza"; -local rsm = module:require "rsm"; +local rsm = require "rsm"; local get_prefs = module:require"mamprefs".get; local set_prefs = module:require"mamprefs".set; local prefs_to_stanza = module:require"mamprefsxml".tostanza; diff --git a/plugins/mod_mam/rsm.lib.lua b/plugins/mod_mam/rsm.lib.lua deleted file mode 100644 index 7d5fbcab..00000000 --- a/plugins/mod_mam/rsm.lib.lua +++ /dev/null @@ -1,87 +0,0 @@ -local stanza = require"util.stanza".stanza; -local tostring, tonumber = tostring, tonumber; -local type = type; -local pairs = pairs; - -local xmlns_rsm = 'http://jabber.org/protocol/rsm'; - -local element_parsers = {}; - -do - local parsers = element_parsers; - local function xs_int(st) - return tonumber((st:get_text())); - end - local function xs_string(st) - return st:get_text(); - end - - parsers.after = xs_string; - parsers.before = function(st) - local text = st:get_text(); - return text == "" or text; - end; - parsers.max = xs_int; - parsers.index = xs_int; - - parsers.first = function(st) - return { index = tonumber(st.attr.index); st:get_text() }; - end; - parsers.last = xs_string; - parsers.count = xs_int; -end - -local element_generators = setmetatable({ - first = function(st, data) - if type(data) == "table" then - st:tag("first", { index = data.index }):text(data[1]):up(); - else - st:tag("first"):text(tostring(data)):up(); - end - end; - before = function(st, data) - if data == true then - st:tag("before"):up(); - else - st:tag("before"):text(tostring(data)):up(); - end - end -}, { - __index = function(_, name) - return function(st, data) - st:tag(name):text(tostring(data)):up(); - end - end; -}); - - -local function parse(set) - local rs = {}; - for tag in set:childtags() do - local name = tag.name; - local parser = name and element_parsers[name]; - if parser then - rs[name] = parser(tag); - end - end - return rs; -end - -local function generate(t) - local st = stanza("set", { xmlns = xmlns_rsm }); - for k,v in pairs(t) do - if element_parsers[k] then - element_generators[k](st, v); - end - end - return st; -end - -local function get(st) - local set = st:get_child("set", xmlns_rsm); - if set and #set.tags > 0 then - return parse(set); - end -end - -return { parse = parse, generate = generate, get = get }; |