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 |