Software /
code /
verse
File
plugins/uptime.lua @ 438:98dc1750584d 0.10.0
pubsub: Support for 'notify' in retract and purge operations
This is a slight API change for :retract(), but should be backwards-compatible.
author | Matthew Wild <mwild1@gmail.com> |
---|---|
date | Mon, 06 Dec 2021 09:09:50 +0000 |
parent | 351:4455b07f77ed |
line wrap: on
line source
local verse = require "verse"; local xmlns_last = "jabber:iq:last"; local function set_uptime(self, uptime_info) self.starttime = uptime_info.starttime; end function verse.plugins.uptime(stream) stream.uptime = { set = set_uptime }; stream:hook("iq/"..xmlns_last, function (stanza) if stanza.attr.type ~= "get" then return; end local reply = verse.reply(stanza) :tag("query", { seconds = tostring(os.difftime(os.time(), stream.uptime.starttime)), xmlns = xmlns_last }); stream:send(reply); return true; end); function stream:query_uptime(target_jid, callback) callback = callback or function (uptime) return stream:event("uptime/response", uptime); end stream:send_iq(verse.iq({ type = "get", to = target_jid }) :tag("query", { xmlns = xmlns_last }), function (reply) local query = reply:get_child("query", xmlns_last); if reply.attr.type == "result" then local seconds = tonumber(query.attr.seconds); callback({ seconds = seconds or nil; }); else local type, condition, text = reply:get_error(); callback({ error = true; condition = condition; text = text; type = type; }); end end); end return true; end