Mercurial > prosody-modules
comparison mod_bookmarks2/mod_bookmarks2.lua @ 3741:33b3e2387a10
mod_bookmarks2: Also migrate legacy PEP bookmarks (current XEP-0048).
author | Emmanuel Gil Peyrot <linkmauve@linkmauve.fr> |
---|---|
date | Wed, 13 Nov 2019 16:40:09 +0100 |
parents | b3fb32bd1f01 |
children | 05bca7a771d6 |
comparison
equal
deleted
inserted
replaced
3740:b3fb32bd1f01 | 3741:33b3e2387a10 |
---|---|
215 local session = event.session; | 215 local session = event.session; |
216 local username = session.username; | 216 local username = session.username; |
217 local service = mod_pep.get_pep_service(username); | 217 local service = mod_pep.get_pep_service(username); |
218 local jid = username.."@"..session.host; | 218 local jid = username.."@"..session.host; |
219 | 219 |
220 local ok, ret = service:get_items("storage:bookmarks", session.full_jid); | |
221 if ok then | |
222 module:log("debug", "Legacy PEP bookmarks found for %s, migrating.", jid); | |
223 local failed = false; | |
224 for _, item_id in ipairs(ret) do | |
225 local item = ret[item_id]; | |
226 if item.attr.id ~= "current" then | |
227 module:log("warn", "Legacy PEP bookmarks for %s isn’t using 'current' as its id: %s", jid, item.attr.id); | |
228 end | |
229 local bookmarks = item:get_child("storage", "storage:bookmarks"); | |
230 module:log("debug", "Got legacy PEP bookmarks of %s: %s", jid, bookmarks); | |
231 | |
232 local ok, err = publish_to_pep(session.full_jid, bookmarks, false); | |
233 if not ok then | |
234 module:log("error", "Failed to store legacy PEP bookmarks to bookmarks 2 for %s, aborting migration: %s", jid, err); | |
235 failed = true; | |
236 break; | |
237 end | |
238 end | |
239 if not failed then | |
240 module:log("debug", "Successfully migrated legacy PEP bookmarks of %s to bookmarks 2, attempting deletion of the node.", jid); | |
241 local ok, err = service:delete("storage:bookmarks", jid); | |
242 if not ok then | |
243 module:log("error", "Failed to delete legacy PEP bookmarks for %s: %s", jid, err); | |
244 end | |
245 end | |
246 end | |
247 | |
220 local data, err = private_storage:get(username, "storage:storage:bookmarks"); | 248 local data, err = private_storage:get(username, "storage:storage:bookmarks"); |
221 if not data then | 249 if not data then |
222 module:log("debug", "No existing legacy bookmarks for %s, migration already done: %s", jid, err); | 250 module:log("debug", "No existing legacy bookmarks for %s, migration already done: %s", jid, err); |
223 local ok, ret = service:get_items("urn:xmpp:bookmarks:0", session.full_jid); | 251 local ok, ret = service:get_items("urn:xmpp:bookmarks:0", session.full_jid); |
224 if not ok or not ret then | 252 if not ok or not ret then |
228 return; | 256 return; |
229 end | 257 end |
230 local bookmarks = st.deserialize(data); | 258 local bookmarks = st.deserialize(data); |
231 module:log("debug", "Got legacy bookmarks of %s: %s", jid, bookmarks); | 259 module:log("debug", "Got legacy bookmarks of %s: %s", jid, bookmarks); |
232 | 260 |
233 module:log("debug", "Going to store PEP item for %s.", jid); | 261 module:log("debug", "Going to store legacy bookmarks to bookmarks 2 %s.", jid); |
234 local ok, err = publish_to_pep(session.full_jid, bookmarks, false); | 262 local ok, err = publish_to_pep(session.full_jid, bookmarks, false); |
235 if not ok then | 263 if not ok then |
236 module:log("error", "Failed to store bookmarks to PEP for %s, aborting migration: %s", jid, err); | 264 module:log("error", "Failed to store legacy bookmarks to bookmarks 2 for %s, aborting migration: %s", jid, err); |
237 return; | 265 return; |
238 end | 266 end |
239 module:log("debug", "Stored bookmarks to PEP for %s.", jid); | 267 module:log("debug", "Stored legacy bookmarks to bookmarks 2 for %s.", jid); |
240 | 268 |
241 local ok, err = private_storage:set(username, "storage:storage:bookmarks", nil); | 269 local ok, err = private_storage:set(username, "storage:storage:bookmarks", nil); |
242 if not ok then | 270 if not ok then |
243 module:log("error", "Failed to remove private bookmarks of %s: %s", jid, err); | 271 module:log("error", "Failed to remove legacy bookmarks of %s: %s", jid, err); |
244 return; | 272 return; |
245 end | 273 end |
246 module:log("debug", "Removed private bookmarks of %s, migration done!", jid); | 274 module:log("debug", "Removed legacy bookmarks of %s, migration done!", jid); |
247 end | 275 end |
248 | 276 |
249 local function on_node_created(event) | 277 local function on_node_created(event) |
250 local service, node, actor = event.service, event.node, event.actor; | 278 local service, node, actor = event.service, event.node, event.actor; |
251 if node ~= "storage:bookmarks" then | 279 if node ~= "storage:bookmarks" then |