annotate mod_rtbl/mod_rtbl.lua @ 6513:5fb466693e85

mod_storage_xmlarchive: Ensure list index files are removed using os.remove() on the list files leaves the new index files behind since util.datamanager does not know they are removed. Thanks Link Mauve
author Kim Alvefur <zash@zash.se>
date Tue, 07 Apr 2026 21:10:54 +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