annotate mod_invites_tracking/mod_invites_tracking.lua @ 4942:e7b9bc629ecc

mod_rest: Add special handling to catch MAM results from remote hosts Makes MAM queries to remote hosts works. As the comment says, MAM results from users' local archives or local MUCs are returned via origin.send() which is provided in the event and thus already worked. Results from remote hosts go via normal stanza routing and events, which need this extra handling to catch. This pattern of iq-set, message+, iq-result is generally limited to MAM. Closest similar thing might be MUC join, but to really handle that you would need the webhook callback mechanism.
author Kim Alvefur <zash@zash.se>
date Mon, 16 May 2022 19:47:09 +0200
parents 32f1f18f4874
children cb3b2fbf57e7
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
4394
32f1f18f4874 mod_invites_tracking: simple module to store who created an invite
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
1 local tracking_store = module:open_store("invites_tracking");
32f1f18f4874 mod_invites_tracking: simple module to store who created an invite
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
2
32f1f18f4874 mod_invites_tracking: simple module to store who created an invite
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
3 module:hook("user-registered", function(event)
32f1f18f4874 mod_invites_tracking: simple module to store who created an invite
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
4 local validated_invite = event.validated_invite or (event.session and event.session.validated_invite);
32f1f18f4874 mod_invites_tracking: simple module to store who created an invite
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
5 local new_username = event.username;
32f1f18f4874 mod_invites_tracking: simple module to store who created an invite
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
6
32f1f18f4874 mod_invites_tracking: simple module to store who created an invite
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
7 local invite_id = nil;
32f1f18f4874 mod_invites_tracking: simple module to store who created an invite
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
8 local invite_source = nil;
32f1f18f4874 mod_invites_tracking: simple module to store who created an invite
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
9 if validated_invite then
32f1f18f4874 mod_invites_tracking: simple module to store who created an invite
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
10 invite_source = validated_invite.additional_data and validated_invite.additional_data.source;
32f1f18f4874 mod_invites_tracking: simple module to store who created an invite
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
11 invite_id = validated_invite.token;
32f1f18f4874 mod_invites_tracking: simple module to store who created an invite
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
12 end
32f1f18f4874 mod_invites_tracking: simple module to store who created an invite
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
13
32f1f18f4874 mod_invites_tracking: simple module to store who created an invite
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
14 tracking_store:set(new_username, {invite_id = validated_invite.token, invite_source = invite_source});
32f1f18f4874 mod_invites_tracking: simple module to store who created an invite
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
15 module:log("debug", "recorded that invite from %s was used to create %s", invite_source, new_username)
32f1f18f4874 mod_invites_tracking: simple module to store who created an invite
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
16 end);
32f1f18f4874 mod_invites_tracking: simple module to store who created an invite
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
17
32f1f18f4874 mod_invites_tracking: simple module to store who created an invite
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
18 -- " " is an invalid localpart -> we can safely use it for store metadata
32f1f18f4874 mod_invites_tracking: simple module to store who created an invite
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
19 tracking_store:set(" ", {version="1"});