Software /
code /
verse
Comparison
plugins/time.lua @ 480:a48a4723aa2a
Add time query plugin
author | Matthew Wild <mwild1@gmail.com> |
---|---|
date | Fri, 17 Mar 2023 12:30:49 +0000 |
child | 490:6b2f31da9610 |
comparison
equal
deleted
inserted
replaced
479:2bb12fb6fcbd | 480:a48a4723aa2a |
---|---|
1 local verse = require "verse"; | |
2 local dt = require "util.datetime"; | |
3 | |
4 local xmlns_time = "urn:xmpp:time"; | |
5 | |
6 function verse.plugins.time(stream) | |
7 function stream:query_time(target_jid, callback) | |
8 callback = callback or function (time) return self:event("time/response", time); end | |
9 self:send_iq(verse.iq({ type = "get", to = target_jid }) | |
10 :tag("time", { xmlns = xmlns_time }), | |
11 function (reply) | |
12 if reply.attr.type == "result" then | |
13 local query = reply:get_child("time", xmlns_time); | |
14 local resp = { | |
15 tzo = query:get_child_text("tzo"); | |
16 utc = query:get_child_text("utc"); | |
17 }; | |
18 if resp.utc then | |
19 resp.timestamp = dt.parse(resp.utc); | |
20 end | |
21 callback(resp); | |
22 else | |
23 local type, condition, text = reply:get_error(); | |
24 callback({ | |
25 error = true; | |
26 condition = condition; | |
27 text = text; | |
28 type = type; | |
29 }); | |
30 end | |
31 end); | |
32 end | |
33 return true; | |
34 end |