diff options
Diffstat (limited to 'xmpp-vala')
| -rw-r--r-- | xmpp-vala/meson.build | 1 | ||||
| -rw-r--r-- | xmpp-vala/src/module/xep/0424_message_retraction.vala | 15 | ||||
| -rw-r--r-- | xmpp-vala/src/module/xep/0425_message_moderation.vala | 19 |
3 files changed, 31 insertions, 4 deletions
diff --git a/xmpp-vala/meson.build b/xmpp-vala/meson.build index 4aa6e328..d4bfc9c2 100644 --- a/xmpp-vala/meson.build +++ b/xmpp-vala/meson.build @@ -125,6 +125,7 @@ sources = files( 'src/module/xep/0410_muc_self_ping.vala', 'src/module/xep/0421_occupant_ids.vala', 'src/module/xep/0424_message_retraction.vala', + 'src/module/xep/0425_message_moderation.vala', 'src/module/xep/0428_fallback_indication.vala', 'src/module/xep/0444_reactions.vala', 'src/module/xep/0446_file_metadata_element.vala', diff --git a/xmpp-vala/src/module/xep/0424_message_retraction.vala b/xmpp-vala/src/module/xep/0424_message_retraction.vala index 747f4c08..3e60eb2b 100644 --- a/xmpp-vala/src/module/xep/0424_message_retraction.vala +++ b/xmpp-vala/src/module/xep/0424_message_retraction.vala @@ -1,12 +1,19 @@ namespace Xmpp.Xep.MessageRetraction { - private const string NS_URI = "urn:xmpp:message-retract:1"; + public const string NS_URI = "urn:xmpp:message-retract:1"; public static string? get_retract_id(MessageStanza message) { - StanzaNode? node = message.stanza.get_subnode("retract", NS_URI); - if (node == null) return null; + StanzaNode? retract_node = message.stanza.get_subnode("retract", NS_URI); + if (retract_node == null) return null; - return node.get_attribute("id"); + return retract_node.get_attribute("id"); + } + + public static void set_retract_id(MessageStanza message, string message_id) { + StanzaNode retract_node = (new StanzaNode.build("retract", NS_URI)) + .add_self_xmlns() + .put_attribute("id", message_id); + message.stanza.put_node(retract_node); } public class Module : XmppStreamModule { diff --git a/xmpp-vala/src/module/xep/0425_message_moderation.vala b/xmpp-vala/src/module/xep/0425_message_moderation.vala new file mode 100644 index 00000000..80fab905 --- /dev/null +++ b/xmpp-vala/src/module/xep/0425_message_moderation.vala @@ -0,0 +1,19 @@ +namespace Xmpp.Xep.MessageModeration { + + public const string NS_URI = "urn:xmpp:message-moderate:1"; + + + /** + * @return whether the moderation was successful + */ + public static async bool moderate(XmppStream stream, Jid muc_jid, string message_id) { + StanzaNode moderate_node = new StanzaNode.build("moderate", NS_URI) + .add_self_xmlns() + .put_attribute("id", message_id) + .put_node(new StanzaNode.build("retract", Xep.MessageRetraction.NS_URI).add_self_xmlns()); + Iq.Stanza iq = new Iq.Stanza.set(moderate_node) { to = muc_jid }; + + Iq.Stanza result_stanza = yield stream.get_module(Iq.Module.IDENTITY).send_iq_async(stream, iq); + return !result_stanza.is_error(); + } +}
\ No newline at end of file |
