git » sdk » commit dab75a8

Support caps

author Stephen Paul Weber
2023-09-13 18:52:05 UTC
committer Stephen Paul Weber
2023-09-13 18:53:11 UTC
parent 4f74da579adc49f142de13f1b587c1103c1fb34e

Support caps

xmpp/Client.hx +4 -11

diff --git a/xmpp/Client.hx b/xmpp/Client.hx
index a250fc0..2dc5093 100644
--- a/xmpp/Client.hx
+++ b/xmpp/Client.hx
@@ -3,6 +3,7 @@ package xmpp;
 import haxe.crypto.Base64;
 import haxe.io.Bytes;
 import haxe.io.BytesData;
+import xmpp.Caps;
 import xmpp.Chat;
 import xmpp.EventEmitter;
 import xmpp.Stream;
@@ -20,6 +21,7 @@ class Client extends xmpp.EventEmitter {
 	public var jid(default,null):String;
 	private var chats: ChatList = [];
 	private var persistence: Persistence;
+	private final caps = new Caps("https://sdk.snikket.org", [], ["urn:xmpp:avatar:metadata+notify"]);
 
 	public function new(jid: String, persistence: Persistence) {
 		super();
@@ -90,23 +92,14 @@ class Client extends xmpp.EventEmitter {
 		this.stream.on("iq", function(event) {
 			final stanza:Stanza = event.stanza;
 			if (stanza.attr.get("type") == "get" && stanza.getChild("query", "http://jabber.org/protocol/disco#info") != null) {
-				stream.sendStanza(
-					new Stanza("iq", {
-						type: "result",
-						id: stanza.attr.get("id"),
-						to: stanza.attr.get("from")
-					})
-						.tag("query", { xmlns: "http://jabber.org/protocol/disco#info" })
-						.tag("feature", { "var": "urn:xmpp:avatar:metadata+notify"}).up()
-						.up()
-				);
+				stream.sendStanza(caps.discoReply(stanza));
 				return EventHandled;
 			}
 
 			return EventUnhandled;
 		});
 
-		stream.sendStanza(new Stanza("presence")); // Set self to online
+		stream.sendStanza(caps.addC(new Stanza("presence"))); // Set self to online
 		rosterGet();
 		sync();
 		return this.trigger("status/online", {});