Mercurial > prosody-modules
comparison mod_pubsub_feed/mod_pubsub_feed.lua @ 279:aa0df3db4901
mod_pubsub_feed: Wrap entry in a item element.
| author | Kim Alvefur <zash@zash.se> |
|---|---|
| date | Sat, 27 Nov 2010 20:44:22 +0100 |
| parents | 653c1826739e |
| children | 801066bf5793 |
comparison
equal
deleted
inserted
replaced
| 278:653c1826739e | 279:aa0df3db4901 |
|---|---|
| 4 -- Component "pubsub.example.com" "pubsub" | 4 -- Component "pubsub.example.com" "pubsub" |
| 5 -- modules_enabled = { | 5 -- modules_enabled = { |
| 6 -- "pubsub_feed"; | 6 -- "pubsub_feed"; |
| 7 -- } | 7 -- } |
| 8 -- feeds = { -- node -> url | 8 -- feeds = { -- node -> url |
| 9 -- telecomix = "https://status.telecomix.org/api/statuses/public_timeline.atom"; | 9 -- prosody_blog = "http://blog.prosody.im/feed/atom.xml"; |
| 10 -- } | 10 -- } |
| 11 -- feed_pull_interval = 20 -- minutes | 11 -- feed_pull_interval = 20 -- minutes |
| 12 | 12 |
| 13 local modules = hosts[module.host].modules; | 13 local modules = hosts[module.host].modules; |
| 14 if not modules.pubsub then | 14 if not modules.pubsub then |
| 15 module:log("warn", "Pubsub needs to be loaded on this host"); | 15 module:log("warn", "Pubsub needs to be loaded on this host"); |
| 16 end | 16 end |
| 17 local add_task = require "util.timer".add_task; | 17 local add_task = require "util.timer".add_task; |
| 18 local date, time = os.date, os.time; | 18 local date, time = os.date, os.time; |
| 19 local dt_parse = require "util.datetime".parse; | 19 local dt_parse, dt_datetime = require "util.datetime".parse, require "util.datetime".datetime; |
| 20 local http = require "net.http"; | 20 local http = require "net.http"; |
| 21 local parse_feed = require "feeds".feed_from_string; | 21 local parse_feed = require "feeds".feed_from_string; |
| 22 local st = require "util.stanza"; | |
| 22 | 23 |
| 23 local config = module:get_option("feeds") or { | 24 local config = module:get_option("feeds") or { |
| 24 planet_jabber = "http://planet.jabber.org/atom.xml"; | 25 planet_jabber = "http://planet.jabber.org/atom.xml"; |
| 25 prosody_blog = "http://blog.prosody.im/feed/atom.xml"; | 26 prosody_blog = "http://blog.prosody.im/feed/atom.xml"; |
| 26 }; | 27 }; |
| 66 | 67 |
| 67 local timestamp = e_published or e_updated or nil; | 68 local timestamp = e_published or e_updated or nil; |
| 68 module:log("debug", "timestamp is %s, item.last_update is %s", tostring(timestamp), tostring(item.last_update)); | 69 module:log("debug", "timestamp is %s, item.last_update is %s", tostring(timestamp), tostring(item.last_update)); |
| 69 if not timestamp or not item.last_update or timestamp > item.last_update then | 70 if not timestamp or not item.last_update or timestamp > item.last_update then |
| 70 local id = entry:get_child("id"); | 71 local id = entry:get_child("id"); |
| 71 id = id[1] or item.url.."#"..timestamp; | 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); | |
| 74 | |
| 72 module:log("debug", "publishing to %s, id %s", node, id); | 75 module:log("debug", "publishing to %s, id %s", node, id); |
| 73 modules.pubsub.service:publish(node, actor, id, entry) | 76 modules.pubsub.service:publish(node, actor, id, item) |
| 74 end | 77 end |
| 75 end | 78 end |
| 76 end); | 79 end); |
| 77 end | 80 end |
| 78 return refresh_interval; | 81 return refresh_interval; |
