Software /
code /
prosody-modules
Diff
mod_pubsub_feeds/mod_pubsub_feeds.lua @ 1454:480c6f0576b1
mod_pubsub_feeds: Update to 0.4 version of PubSubHubbub
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Thu, 26 Jun 2014 18:29:01 +0200 |
parent | 1453:7b53cfc6ba8d |
child | 1455:13e359c48b5b |
line wrap: on
line diff
--- a/mod_pubsub_feeds/mod_pubsub_feeds.lua Thu Jun 26 18:25:18 2014 +0200 +++ b/mod_pubsub_feeds/mod_pubsub_feeds.lua Thu Jun 26 18:29:01 2014 +0200 @@ -13,7 +13,7 @@ -- feed_pull_interval = 20 -- minutes -- -- Reference --- http://pubsubhubbub.googlecode.com/svn/trunk/pubsubhubbub-core-0.3.html +-- http://pubsubhubbub.googlecode.com/svn/trunk/pubsubhubbub-core-0.4.html local pubsub = module:depends"pubsub"; @@ -143,8 +143,6 @@ function refresh_feeds(now) --module:log("debug", "Refreshing feeds"); for node, item in pairs(feed_list) do - --FIXME Don't fetch feeds which have a subscription - -- Otoho, what if the subscription expires or breaks? if item.subscription ~= "subscribe" and item.last_update + refresh_interval < now then --module:log("debug", "checking %s", item.node); fetch(item, update_entry); @@ -159,14 +157,12 @@ function subscribe(feed, want) want = want or "subscribe"; - feed.token = uuid(); feed.secret = feed.secret or uuid(); local body = formencode{ ["hub.callback"] = format_url(feed.node); ["hub.mode"] = want; ["hub.topic"] = feed.url; - ["hub.verify"] = "async"; - ["hub.verify_token"] = feed.token; + ["hub.verify"] = "async"; -- COMPAT this is REQUIRED in the 0.3 draft but removed in 0.4 ["hub.secret"] = feed.secret; --["hub.lease_seconds"] = ""; }; @@ -216,11 +212,10 @@ -- it would probably invalidate the subscription -- when/if the hub asks if it should be renewed end - if query["hub.verify_token"] ~= feed.token then - module:log("debug", "Invalid verify_token: %s", tostring(query["hub.verify_token"])) - return 401; + local lease_seconds = tonumber(query["hub.lease_seconds"]); + if lease_seconds then + feed.lease_expires = time() + lease_seconds - refresh_interval * 2; end - module:log("debug", "Confirming %s request to %s", feed.subscription, feed.url) return query["hub.challenge"]; end return 400;