blob: 870df2951f6ff292c2c29412b5169ea1f6531553 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
namespace Xmpp.Xep.Replies {
public const string NS_URI = "urn:xmpp:reply:0";
public class ReplyTo {
public Jid to_jid { get; set; }
public string to_message_id { get; set; }
public ReplyTo(Jid to_jid, string to_message_id) {
this.to_jid = to_jid;
this.to_message_id = to_message_id;
}
}
public static void set_reply_to(MessageStanza message, ReplyTo reply_to) {
StanzaNode reply_node = (new StanzaNode.build("reply", NS_URI))
.add_self_xmlns()
.put_attribute("to", reply_to.to_jid.to_string())
.put_attribute("id", reply_to.to_message_id);
message.stanza.put_node(reply_node);
}
public ReplyTo? get_reply_to(MessageStanza message) {
StanzaNode? reply_node = message.stanza.get_subnode("reply", NS_URI);
if (reply_node == null) return null;
string? to_str = reply_node.get_attribute("to");
if (to_str == null) return null;
try {
Jid to_jid = new Jid(to_str);
string? id = reply_node.get_attribute("id");
if (id == null) return null;
return new ReplyTo(to_jid, id);
} catch (InvalidJidError e) {
return null;
}
return null;
}
}
|