# HG changeset patch # User Marco Cirillo # Date 1300112490 0 # Node ID 651c696e0b21176c03190c0ad3a9af5e83dcd749 # Parent fa6e1e65cb3c401dc787567c83f6f73902f43f13 Added uptime plugin, included also an entry for it into the squishy file. diff -r fa6e1e65cb3c -r 651c696e0b21 plugins/uptime.lua --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/plugins/uptime.lua Mon Mar 14 14:21:30 2011 +0000 @@ -0,0 +1,40 @@ +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 = 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 diff -r fa6e1e65cb3c -r 651c696e0b21 squishy --- a/squishy Mon Mar 14 15:17:32 2011 +0000 +++ b/squishy Mon Mar 14 14:21:30 2011 +0000 @@ -47,6 +47,7 @@ Module "verse.plugins.adhoc" "plugins/adhoc.lua" Module "verse.plugins.private" "plugins/private.lua" Module "verse.plugins.groupchat" "plugins/groupchat.lua" +Module "verse.plugins.uptime" "plugins/uptime.lua" Module "net.httpclient_listener" "net/httpclient_listener.lua" Module "net.connlisteners" "net/connlisteners.lua"