annotate mod_idlecompat/mod_idlecompat.lua @ 1260:4e14ad802d58

mod_idlecompat: Add initial version. Add XEP-0319 tags based on XEP-0012 tags for presence stanzas.
author Tobias Markmann <tm@ayena.de>
date Fri, 03 Jan 2014 11:54:13 +0100
parents
children 4b58e35a72e0
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1260
4e14ad802d58 mod_idlecompat: Add initial version.
Tobias Markmann <tm@ayena.de>
parents:
diff changeset
1 -- Last User Interaction in Presence via Last Activity compatibility module
4e14ad802d58 mod_idlecompat: Add initial version.
Tobias Markmann <tm@ayena.de>
parents:
diff changeset
2 -- http://xmpp.org/extensions/xep-0319.html
4e14ad802d58 mod_idlecompat: Add initial version.
Tobias Markmann <tm@ayena.de>
parents:
diff changeset
3 -- http://xmpp.org/extensions/xep-0012.html
4e14ad802d58 mod_idlecompat: Add initial version.
Tobias Markmann <tm@ayena.de>
parents:
diff changeset
4 -- Copyright (C) 2014 Tobias Markmann
4e14ad802d58 mod_idlecompat: Add initial version.
Tobias Markmann <tm@ayena.de>
parents:
diff changeset
5 --
4e14ad802d58 mod_idlecompat: Add initial version.
Tobias Markmann <tm@ayena.de>
parents:
diff changeset
6 -- This file is MIT/X11 licensed.
4e14ad802d58 mod_idlecompat: Add initial version.
Tobias Markmann <tm@ayena.de>
parents:
diff changeset
7
4e14ad802d58 mod_idlecompat: Add initial version.
Tobias Markmann <tm@ayena.de>
parents:
diff changeset
8 local st = require "util.stanza";
4e14ad802d58 mod_idlecompat: Add initial version.
Tobias Markmann <tm@ayena.de>
parents:
diff changeset
9 local datetime = require "util.datetime";
4e14ad802d58 mod_idlecompat: Add initial version.
Tobias Markmann <tm@ayena.de>
parents:
diff changeset
10
4e14ad802d58 mod_idlecompat: Add initial version.
Tobias Markmann <tm@ayena.de>
parents:
diff changeset
11 local function on_presence(event)
4e14ad802d58 mod_idlecompat: Add initial version.
Tobias Markmann <tm@ayena.de>
parents:
diff changeset
12 local stanza = event.stanza;
4e14ad802d58 mod_idlecompat: Add initial version.
Tobias Markmann <tm@ayena.de>
parents:
diff changeset
13
4e14ad802d58 mod_idlecompat: Add initial version.
Tobias Markmann <tm@ayena.de>
parents:
diff changeset
14 local last_activity = stanza.name == "presence" and stanza:get_child("query", "jabber:iq:last") or false;
4e14ad802d58 mod_idlecompat: Add initial version.
Tobias Markmann <tm@ayena.de>
parents:
diff changeset
15 local has_idle = stanza:get_child("idle", "urn:xmpp:idle:1");
4e14ad802d58 mod_idlecompat: Add initial version.
Tobias Markmann <tm@ayena.de>
parents:
diff changeset
16 if last_activity and not has_idle then
4e14ad802d58 mod_idlecompat: Add initial version.
Tobias Markmann <tm@ayena.de>
parents:
diff changeset
17 module:log("debug", "Adding XEP-0319 tag from Last Activity.");
4e14ad802d58 mod_idlecompat: Add initial version.
Tobias Markmann <tm@ayena.de>
parents:
diff changeset
18 local seconds = last_activity.attr.seconds;
4e14ad802d58 mod_idlecompat: Add initial version.
Tobias Markmann <tm@ayena.de>
parents:
diff changeset
19 local last_userinteraction = datetime.datetime(os.time() - seconds);
4e14ad802d58 mod_idlecompat: Add initial version.
Tobias Markmann <tm@ayena.de>
parents:
diff changeset
20 stanza:tag("idle", { xmlns = "urn:xmpp:idle:1", since = last_userinteraction }):up();
4e14ad802d58 mod_idlecompat: Add initial version.
Tobias Markmann <tm@ayena.de>
parents:
diff changeset
21 end
4e14ad802d58 mod_idlecompat: Add initial version.
Tobias Markmann <tm@ayena.de>
parents:
diff changeset
22 end
4e14ad802d58 mod_idlecompat: Add initial version.
Tobias Markmann <tm@ayena.de>
parents:
diff changeset
23
4e14ad802d58 mod_idlecompat: Add initial version.
Tobias Markmann <tm@ayena.de>
parents:
diff changeset
24 -- incoming
4e14ad802d58 mod_idlecompat: Add initial version.
Tobias Markmann <tm@ayena.de>
parents:
diff changeset
25 module:hook("presence/full", on_presence, 900);
4e14ad802d58 mod_idlecompat: Add initial version.
Tobias Markmann <tm@ayena.de>
parents:
diff changeset
26 module:hook("presence/bare", on_presence, 900);
4e14ad802d58 mod_idlecompat: Add initial version.
Tobias Markmann <tm@ayena.de>
parents:
diff changeset
27
4e14ad802d58 mod_idlecompat: Add initial version.
Tobias Markmann <tm@ayena.de>
parents:
diff changeset
28 -- outgoing
4e14ad802d58 mod_idlecompat: Add initial version.
Tobias Markmann <tm@ayena.de>
parents:
diff changeset
29 module:hook("pre-presence/bare", on_presence, 900);
4e14ad802d58 mod_idlecompat: Add initial version.
Tobias Markmann <tm@ayena.de>
parents:
diff changeset
30 module:hook("pre-presence/full", on_presence, 900);
4e14ad802d58 mod_idlecompat: Add initial version.
Tobias Markmann <tm@ayena.de>
parents:
diff changeset
31 module:hook("pre-presence/host", on_presence, 900);