mod_pubsub_feeds/mod_pubsub_feeds.lua
changeset 2386 f159ad7ac18a
parent 2385 a4614a329bdd
child 2387 18323c6aa133
equal deleted inserted replaced
2385:a4614a329bdd 2386:f159ad7ac18a
    81 	local feed = parse_feed(item.data);
    81 	local feed = parse_feed(item.data);
    82 	local entries = {};
    82 	local entries = {};
    83 	for entry in feed:childtags("entry") do
    83 	for entry in feed:childtags("entry") do
    84 		table.insert(entries, entry);
    84 		table.insert(entries, entry);
    85 	end
    85 	end
       
    86 	local ok = pubsub.service:get_items(node, true);
       
    87 	if not ok then
       
    88 		local ok, err = pubsub.service:create(node, true);
       
    89 		if not ok then
       
    90 			module:log("error", "Could not create node %s: %s", node, err);
       
    91 			return;
       
    92 		end
       
    93 	end
    86 	for i = #entries, 1, -1 do -- Feeds are usually in reverse order
    94 	for i = #entries, 1, -1 do -- Feeds are usually in reverse order
    87 		local entry = entries[i];
    95 		local entry = entries[i];
    88 		entry.attr.xmlns = xmlns_atom;
    96 		entry.attr.xmlns = xmlns_atom;
    89 
    97 
    90 		local e_published = entry:get_child_text("published");
    98 		local e_published = entry:get_child_text("published");
   108 			-- TODO Put data from /feed into item/source
   116 			-- TODO Put data from /feed into item/source
   109 
   117 
   110 			--module:log("debug", "publishing to %s, id %s", node, id);
   118 			--module:log("debug", "publishing to %s, id %s", node, id);
   111 			local ok, err = pubsub.service:publish(node, true, id, xitem);
   119 			local ok, err = pubsub.service:publish(node, true, id, xitem);
   112 			if not ok then
   120 			if not ok then
   113 				if err == "item-not-found" then -- try again
   121 				module:log("error", "Publishing to node %s failed: %s", node, err);
   114 					--module:log("debug", "got item-not-found, creating %s and trying again", node);
       
   115 					local ok, err = pubsub.service:create(node, true);
       
   116 					if not ok then
       
   117 						module:log("error", "could not create node %s: %s", node, err);
       
   118 						return;
       
   119 					end
       
   120 					local ok, err = pubsub.service:publish(node, true, id, xitem);
       
   121 					if not ok then
       
   122 						module:log("error", "could not create or publish node %s: %s", node, err);
       
   123 						return
       
   124 					end
       
   125 				else
       
   126 					module:log("error", "publishing %s failed: %s", node, err);
       
   127 				end
       
   128 			end
   122 			end
   129 		end
   123 		end
   130 	end
   124 	end
   131 
   125 
   132 	if item.lease_expires and item.lease_expires > time() then
   126 	if item.lease_expires and item.lease_expires > time() then