Mercurial > prosody-modules
diff mod_pubsub_feeds/mod_pubsub_feeds.lua @ 2383:18323c6aa133
mod_pubsub_feeds: Halt feed parsing when we see a node we already know about
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Sat, 19 Nov 2016 19:38:14 +0100 |
parents | f159ad7ac18a |
children | feba6439b6fb |
line wrap: on
line diff
--- a/mod_pubsub_feeds/mod_pubsub_feeds.lua Sat Nov 19 19:37:21 2016 +0100 +++ b/mod_pubsub_feeds/mod_pubsub_feeds.lua Sat Nov 19 19:38:14 2016 +0100 @@ -83,13 +83,14 @@ for entry in feed:childtags("entry") do table.insert(entries, entry); end - local ok = pubsub.service:get_items(node, true); + local ok, items = pubsub.service:get_items(node, true); if not ok then local ok, err = pubsub.service:create(node, true); if not ok then module:log("error", "Could not create node %s: %s", node, err); return; end + items = {}; end for i = #entries, 1, -1 do -- Feeds are usually in reverse order local entry = entries[i]; @@ -112,6 +113,10 @@ -- Sigh, no link? id = feed.url .. "#" .. hmac_sha1(feed.url, tostring(entry), true) .. "@" .. dt_datetime(timestamp); end + if items[id] then + -- Assume that this existing means we've added all new items + break; + end local xitem = st.stanza("item", { id = id }):add_child(entry); -- TODO Put data from /feed into item/source