Mercurial > prosody-modules
annotate mod_rtbl/mod_rtbl.lua @ 6525:05d66fe6b289
mod_auth_oauth_external: Reorder and comment on settings
Trying to group settings a bit more.
| author | Kim Alvefur <zash@zash.se> |
|---|---|
| date | Sat, 02 May 2026 16:10:48 +0200 |
| parents | d1d774f79ea8 |
| children |
| 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 |
