annotate mod_rtbl/mod_rtbl.lua @ 6560:7dee00093c88

mod_conversejs: Update for compatibility with Converse.js 14 Some sort of new JavaScript module thing. Appears to be backwards-compatible with earlier versions. Fixes #1997
author Kim Alvefur <zash@zash.se>
date Fri, 26 Jun 2026 17:59:55 +0200
parents d1d774f79ea8
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
6301
77b5dd33a8f3 mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
1 local array = require "util.array";
77b5dd33a8f3 mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
2 local id = require "util.id";
77b5dd33a8f3 mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3 local it = require "util.iterators";
77b5dd33a8f3 mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4 local set = require "util.set";
77b5dd33a8f3 mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5 local st = require "util.stanza";
77b5dd33a8f3 mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
6
77b5dd33a8f3 mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7 module:depends("pubsub_subscription");
77b5dd33a8f3 mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8
6302
13f674a9fb22 mod_rtbl: Correctly export API
Matthew Wild <mwild1@gmail.com>
parents: 6301
diff changeset
9 function new_rtbl_subscription(rtbl_service_jid, rtbl_node, handlers)
6301
77b5dd33a8f3 mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10 local rtbl = {};
77b5dd33a8f3 mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11 local items = {};
77b5dd33a8f3 mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
12 rtbl.items = items;
77b5dd33a8f3 mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
13
77b5dd33a8f3 mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
14 local function notify(event_type, hash)
77b5dd33a8f3 mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
15 local handler = handlers[event_type];
77b5dd33a8f3 mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
16 if not handler then return; end
77b5dd33a8f3 mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
17 handler(hash);
77b5dd33a8f3 mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
18 end
77b5dd33a8f3 mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
19
77b5dd33a8f3 mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
20 module:add_item("pubsub-subscription", {
77b5dd33a8f3 mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
21 service = rtbl_service_jid;
77b5dd33a8f3 mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
22 node = rtbl_node;
77b5dd33a8f3 mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
23
77b5dd33a8f3 mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
24 -- Callbacks:
77b5dd33a8f3 mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
25 on_subscribed = function()
77b5dd33a8f3 mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
26 module:log("info", "RTBL active: %s:%s", rtbl_service_jid, rtbl_node);
77b5dd33a8f3 mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
27 rtbl.subscribed = true;
77b5dd33a8f3 mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
28 end;
77b5dd33a8f3 mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
29
77b5dd33a8f3 mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
30 on_error = function(err)
77b5dd33a8f3 mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
31 module:log(
77b5dd33a8f3 mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
32 "error",
77b5dd33a8f3 mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
33 "Failed to subscribe to RTBL: %s:%s %s::%s: %s",
77b5dd33a8f3 mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
34 rtbl_service_jid,
77b5dd33a8f3 mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
35 rtbl_node,
77b5dd33a8f3 mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
36 err.type,
77b5dd33a8f3 mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
37 err.condition,
77b5dd33a8f3 mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
38 err.text
77b5dd33a8f3 mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
39 );
77b5dd33a8f3 mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
40 rtbl.subscribed = false;
77b5dd33a8f3 mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
41 rtbl.error = err;
77b5dd33a8f3 mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
42 end;
77b5dd33a8f3 mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
43
77b5dd33a8f3 mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
44 on_item = function(event)
77b5dd33a8f3 mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
45 local hash = event.item.attr.id;
77b5dd33a8f3 mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
46 if not hash then return; end
77b5dd33a8f3 mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
47 module:log("debug", "Received new hash from %s:%s: %s", rtbl_service_jid, rtbl_node, hash);
77b5dd33a8f3 mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
48 items[hash] = true;
77b5dd33a8f3 mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
49 notify("added", hash);
77b5dd33a8f3 mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
50 end;
77b5dd33a8f3 mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
51
77b5dd33a8f3 mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
52 on_retract = function (event)
77b5dd33a8f3 mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
53 local hash = event.item.attr.id;
77b5dd33a8f3 mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
54 if not hash then return; end
77b5dd33a8f3 mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
55 module:log("debug", "Retracted hash from %s:%s: %s", rtbl_service_jid, rtbl_node, hash);
77b5dd33a8f3 mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
56 items[hash] = nil;
77b5dd33a8f3 mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
57 notify("removed", hash);
77b5dd33a8f3 mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
58 end;
77b5dd33a8f3 mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
59
77b5dd33a8f3 mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
60 purge = function()
77b5dd33a8f3 mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
61 module:log("debug", "Purge all hashes from %s:%s", rtbl_service_jid, rtbl_node);
77b5dd33a8f3 mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
62 for hash in pairs(items) do
77b5dd33a8f3 mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
63 items[hash] = nil;
77b5dd33a8f3 mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
64 notify("removed", hash);
77b5dd33a8f3 mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
65 end
77b5dd33a8f3 mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
66 end;
77b5dd33a8f3 mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
67 });
77b5dd33a8f3 mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
68
77b5dd33a8f3 mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
69 local request_id = "rtbl-request-"..id.short();
77b5dd33a8f3 mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
70
77b5dd33a8f3 mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
71 local function request_list()
77b5dd33a8f3 mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
72 local items_request = st.iq({ to = rtbl_service_jid, from = module.host, type = "get", id = request_id })
77b5dd33a8f3 mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
73 :tag("pubsub", { xmlns = "http://jabber.org/protocol/pubsub" })
77b5dd33a8f3 mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
74 :tag("items", { node = rtbl_node }):up()
77b5dd33a8f3 mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
75 :up();
77b5dd33a8f3 mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
76 module:send(items_request);
77b5dd33a8f3 mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
77 end
77b5dd33a8f3 mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
78
77b5dd33a8f3 mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
79 local function update_list(event)
77b5dd33a8f3 mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
80 local from_jid = event.stanza.attr.from;
77b5dd33a8f3 mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
81 if from_jid ~= rtbl_service_jid then
77b5dd33a8f3 mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
82 module:log("debug", "Ignoring RTBL response from unknown sender: %s", from_jid);
77b5dd33a8f3 mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
83 return;
77b5dd33a8f3 mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
84 end
77b5dd33a8f3 mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
85 local items_el = event.stanza:find("{http://jabber.org/protocol/pubsub}pubsub/items");
77b5dd33a8f3 mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
86 if not items_el then
77b5dd33a8f3 mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
87 module:log("warn", "Invalid items response from RTBL service %s:%s", rtbl_service_jid, rtbl_node);
77b5dd33a8f3 mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
88 return;
77b5dd33a8f3 mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
89 end
77b5dd33a8f3 mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
90
77b5dd33a8f3 mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
91 local old_entries = set.new(array.collect(it.keys(items)));
77b5dd33a8f3 mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
92
77b5dd33a8f3 mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
93 local n_added, n_removed, n_total = 0, 0, 0;
77b5dd33a8f3 mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
94 for item in items_el:childtags("item") do
77b5dd33a8f3 mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
95 local hash = item.attr.id;
77b5dd33a8f3 mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
96 if hash then
77b5dd33a8f3 mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
97 n_total = n_total + 1;
77b5dd33a8f3 mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
98 if not old_entries:contains(hash) then
77b5dd33a8f3 mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
99 -- New entry
77b5dd33a8f3 mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
100 n_added = n_added + 1;
77b5dd33a8f3 mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
101 items[hash] = true;
77b5dd33a8f3 mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
102 notify("added", hash);
77b5dd33a8f3 mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
103 else
77b5dd33a8f3 mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
104 -- Entry already existed
77b5dd33a8f3 mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
105 old_entries:remove(hash);
77b5dd33a8f3 mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
106 end
77b5dd33a8f3 mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
107 end
77b5dd33a8f3 mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
108 end
77b5dd33a8f3 mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
109
77b5dd33a8f3 mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
110 -- Remove old entries that weren't in the received list
77b5dd33a8f3 mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
111 for hash in old_entries do
77b5dd33a8f3 mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
112 n_removed = n_removed + 1;
77b5dd33a8f3 mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
113 items[hash] = nil;
77b5dd33a8f3 mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
114 notify("removed", hash);
77b5dd33a8f3 mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
115 end
77b5dd33a8f3 mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
116
77b5dd33a8f3 mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
117 module:log("info", "%d RTBL entries received from %s:%s (%d added, %d removed)", n_total, from_jid, rtbl_node, n_added, n_removed);
77b5dd33a8f3 mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
118 return true;
77b5dd33a8f3 mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
119 end
77b5dd33a8f3 mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
120
77b5dd33a8f3 mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
121 module:hook("iq-result/host/"..request_id, update_list);
6303
d1d774f79ea8 mod_rtbl: Handle and log iq errors
Matthew Wild <mwild1@gmail.com>
parents: 6302
diff changeset
122 module:hook("iq-error/host/"..request_id, function (event)
d1d774f79ea8 mod_rtbl: Handle and log iq errors
Matthew Wild <mwild1@gmail.com>
parents: 6302
diff changeset
123 local typ, cond, text = event.stanza:get_error();
d1d774f79ea8 mod_rtbl: Handle and log iq errors
Matthew Wild <mwild1@gmail.com>
parents: 6302
diff changeset
124 module:log("warn", "Failed to fetch RTBL contents from %s:%s: %s %s %s", rtbl_service_jid, rtbl_node, typ, cond, text);
d1d774f79ea8 mod_rtbl: Handle and log iq errors
Matthew Wild <mwild1@gmail.com>
parents: 6302
diff changeset
125 return true;
d1d774f79ea8 mod_rtbl: Handle and log iq errors
Matthew Wild <mwild1@gmail.com>
parents: 6302
diff changeset
126 end);
6301
77b5dd33a8f3 mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
127 module:add_timer(0, request_list);
77b5dd33a8f3 mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
128
77b5dd33a8f3 mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
129 return rtbl;
77b5dd33a8f3 mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
130 end