File

plugins/time.lua @ 498:50d0bd035bb7

util.sasl.oauthbearer: Don't send authzid It's not needed and not recommended in XMPP unless we want to act as someone other than who we authenticate as. We find out the JID during resource binding.
author Kim Alvefur <zash@zash.se>
date Fri, 23 Jun 2023 12:09:49 +0200
parent 490:6b2f31da9610
line wrap: on
line source

local verse = require "verse";
local dt = require "prosody.util.datetime";

local xmlns_time = "urn:xmpp:time";

function verse.plugins.time(stream)
	function stream:query_time(target_jid, callback)
		callback = callback or function (time) return self:event("time/response", time); end
		self:send_iq(verse.iq({ type = "get", to = target_jid })
			:tag("time", { xmlns = xmlns_time }),
			function (reply)
				if reply.attr.type == "result" then
					local query = reply:get_child("time", xmlns_time);
					local resp = {
						tzo = query:get_child_text("tzo");
						utc = query:get_child_text("utc");
					};
					if resp.utc then
						resp.timestamp = dt.parse(resp.utc);
					end
					callback(resp);
				else
					local type, condition, text = reply:get_error();
					callback({
						error = true;
						condition = condition;
						text = text;
						type = type;
					});
				end
			end);
	end
	return true;
end