Mercurial > prosody-modules
comparison mod_pubsub_feed/mod_pubsub_feed.lua @ 300:b81e4f86a231
mod_pubsub_feed: Catch and handle errors when publishing
| author | Kim Alvefur <zash@zash.se> |
|---|---|
| date | Sun, 26 Dec 2010 19:05:39 +0100 |
| parents | 801066bf5793 |
| children | 637dc0a04052 |
comparison
equal
deleted
inserted
replaced
| 299:801066bf5793 | 300:b81e4f86a231 |
|---|---|
| 71 local id = entry:get_child("id"); | 71 local id = entry:get_child("id"); |
| 72 id = id[1] or item.url.."#"..dt_datetime(timestamp); -- Missing id, so make one up | 72 id = id[1] or item.url.."#"..dt_datetime(timestamp); -- Missing id, so make one up |
| 73 local item = st.stanza("item", { id = id }):add_child(entry); | 73 local item = st.stanza("item", { id = id }):add_child(entry); |
| 74 | 74 |
| 75 module:log("debug", "publishing to %s, id %s", node, id); | 75 module:log("debug", "publishing to %s, id %s", node, id); |
| 76 modules.pubsub.service:publish(node, actor, id, item) | 76 local ok, err = modules.pubsub.service:publish(node, actor, id, item); |
| 77 if not ok then | |
| 78 if err == "item-not-found" then -- try again | |
| 79 module:log("debug", "got item-not-found, creating %s and trying again", node); | |
| 80 local ok, err = modules.pubsub.service:create(node, actor); | |
| 81 if not ok then | |
| 82 module:log("error", "could not create node: %s", err); | |
| 83 return; | |
| 84 end | |
| 85 local ok, err = modules.pubsub.service:publish(node, actor, id, item); | |
| 86 if not ok then | |
| 87 module:log("error", "still could not create node: %s", err); | |
| 88 return | |
| 89 end | |
| 90 else | |
| 91 module:log("error", "publish failed: %s", err); | |
| 92 end | |
| 93 end | |
| 77 end | 94 end |
| 78 end | 95 end |
| 79 end); | 96 end); |
| 80 end | 97 end |
| 81 return refresh_interval; | 98 return refresh_interval; |
