Mercurial > prosody-modules
diff mod_pubsub_feeds/mod_pubsub_feeds.lua @ 2382:f159ad7ac18a
mod_pubsub_feeds: Check if node exists earlier and attempt to create it if not
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Sat, 19 Nov 2016 19:37:21 +0100 |
parents | a4614a329bdd |
children | 18323c6aa133 |
line wrap: on
line diff
--- a/mod_pubsub_feeds/mod_pubsub_feeds.lua Sat Nov 19 19:17:49 2016 +0100 +++ b/mod_pubsub_feeds/mod_pubsub_feeds.lua Sat Nov 19 19:37:21 2016 +0100 @@ -83,6 +83,14 @@ for entry in feed:childtags("entry") do table.insert(entries, entry); end + local ok = 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 + end for i = #entries, 1, -1 do -- Feeds are usually in reverse order local entry = entries[i]; entry.attr.xmlns = xmlns_atom; @@ -110,21 +118,7 @@ --module:log("debug", "publishing to %s, id %s", node, id); local ok, err = pubsub.service:publish(node, true, id, xitem); if not ok then - if err == "item-not-found" then -- try again - --module:log("debug", "got item-not-found, creating %s and trying again", node); - 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 - local ok, err = pubsub.service:publish(node, true, id, xitem); - if not ok then - module:log("error", "could not create or publish node %s: %s", node, err); - return - end - else - module:log("error", "publishing %s failed: %s", node, err); - end + module:log("error", "Publishing to node %s failed: %s", node, err); end end end