Software / code / verse
Comparison
plugins/uptime.lua @ 194:651c696e0b21
Added uptime plugin, included also an entry for it into the squishy file.
| author | Marco Cirillo <maranda@lightwitch.org> |
|---|---|
| date | Mon, 14 Mar 2011 14:21:30 +0000 |
| child | 250:a5ac643a7fd6 |
comparison
equal
deleted
inserted
replaced
| 193:fa6e1e65cb3c | 194:651c696e0b21 |
|---|---|
| 1 local xmlns_last = "jabber:iq:last"; | |
| 2 | |
| 3 local function set_uptime(self, uptime_info) | |
| 4 self.starttime = uptime_info.starttime; | |
| 5 end | |
| 6 | |
| 7 function verse.plugins.uptime(stream) | |
| 8 stream.uptime = { set = set_uptime }; | |
| 9 stream:hook("iq/"..xmlns_last, function (stanza) | |
| 10 if stanza.attr.type ~= "get" then return; end | |
| 11 local reply = verse.reply(stanza) | |
| 12 :tag("query", { seconds = tostring(os.difftime(os.time(), stream.uptime.starttime)), xmlns = xmlns_last }); | |
| 13 stream:send(reply); | |
| 14 return true; | |
| 15 end); | |
| 16 | |
| 17 function stream:query_uptime(target_jid, callback) | |
| 18 callback = callback or function (uptime) return stream:event("uptime/response", uptime); end | |
| 19 stream:send_iq(verse.iq({ type = "get", to = target_jid }) | |
| 20 :tag("query", { xmlns = xmlns_last }), | |
| 21 function (reply) | |
| 22 local query = reply:get_child("query", xmlns_last); | |
| 23 if reply.attr.type == "result" then | |
| 24 local seconds = query.attr.seconds; | |
| 25 callback({ | |
| 26 seconds = seconds or nil; | |
| 27 }); | |
| 28 else | |
| 29 local type, condition, text = reply:get_error(); | |
| 30 callback({ | |
| 31 error = true; | |
| 32 condition = condition; | |
| 33 text = text; | |
| 34 type = type; | |
| 35 }); | |
| 36 end | |
| 37 end); | |
| 38 end | |
| 39 return true; | |
| 40 end |