Mercurial > prosody-hg
comparison plugins/mod_pep_plus.lua @ 8982:4a576c39bb2f
mod_pep_plus: Use service discovery helpers from pubsub.lib
| author | Kim Alvefur <zash@zash.se> |
|---|---|
| date | Fri, 06 Jul 2018 17:59:39 +0200 |
| parents | 9194431b6447 |
| children | c5e738b54d77 |
comparison
equal
deleted
inserted
replaced
| 8981:b6cb0a8f75b1 | 8982:4a576c39bb2f |
|---|---|
| 421 end | 421 end |
| 422 update_subscriptions(contact, username, notify); | 422 update_subscriptions(contact, username, notify); |
| 423 end); | 423 end); |
| 424 | 424 |
| 425 module:hook("account-disco-info-node", function(event) | 425 module:hook("account-disco-info-node", function(event) |
| 426 local reply, stanza, origin = event.reply, event.stanza, event.origin; | 426 local stanza, origin = event.stanza, event.origin; |
| 427 local service_name = origin.username; | 427 local service_name = origin.username; |
| 428 if stanza.attr.to ~= nil then | 428 if stanza.attr.to ~= nil then |
| 429 service_name = jid_split(stanza.attr.to); | 429 service_name = jid_split(stanza.attr.to); |
| 430 end | 430 end |
| 431 local service = get_pep_service(service_name); | 431 local service = get_pep_service(service_name); |
| 432 local node = event.node; | 432 return lib_pubsub.handle_disco_info_node(event, service); |
| 433 local ok = service:get_items(node, jid_bare(stanza.attr.from) or true); | |
| 434 if not ok then return; end | |
| 435 event.exists = true; | |
| 436 reply:tag('identity', {category='pubsub', type='leaf'}):up(); | |
| 437 end); | 433 end); |
| 438 | 434 |
| 439 module:hook("account-disco-info", function(event) | 435 module:hook("account-disco-info", function(event) |
| 440 local origin, reply = event.origin, event.reply; | 436 local origin, reply = event.origin, event.reply; |
| 441 | 437 |
| 459 reply:tag('feature', {var=xmlns_pubsub.."#"..feature}):up(); | 455 reply:tag('feature', {var=xmlns_pubsub.."#"..feature}):up(); |
| 460 end | 456 end |
| 461 end); | 457 end); |
| 462 | 458 |
| 463 module:hook("account-disco-items-node", function(event) | 459 module:hook("account-disco-items-node", function(event) |
| 460 local stanza, origin = event.stanza, event.origin; | |
| 461 local is_self = stanza.attr.to == nil; | |
| 462 local username = jid_split(stanza.attr.to); | |
| 463 if is_self then | |
| 464 username = origin.username; | |
| 465 end | |
| 466 local service = get_pep_service(username); | |
| 467 return lib_pubsub.handle_disco_items_node(event, service); | |
| 468 end); | |
| 469 | |
| 470 module:hook("account-disco-items", function(event) | |
| 464 local reply, stanza, origin = event.reply, event.stanza, event.origin; | 471 local reply, stanza, origin = event.reply, event.stanza, event.origin; |
| 465 local node = event.node; | 472 |
| 466 local is_self = stanza.attr.to == nil; | 473 local is_self = stanza.attr.to == nil; |
| 467 local user_bare = jid_bare(stanza.attr.to); | 474 local user_bare = jid_bare(stanza.attr.to); |
| 468 local username = jid_split(stanza.attr.to); | 475 local username = jid_split(stanza.attr.to); |
| 469 if is_self then | 476 if is_self then |
| 470 username = origin.username; | 477 username = origin.username; |
| 471 user_bare = jid_join(username, host); | 478 user_bare = jid_join(username, host); |
| 472 end | 479 end |
| 473 local service = get_pep_service(username); | 480 local service = get_pep_service(username); |
| 474 local ok, ret = service:get_items(node, jid_bare(stanza.attr.from) or true); | |
| 475 if not ok then return; end | |
| 476 event.exists = true; | |
| 477 for _, id in ipairs(ret) do | |
| 478 reply:tag("item", { jid = user_bare, name = id }):up(); | |
| 479 end | |
| 480 end); | |
| 481 | |
| 482 module:hook("account-disco-items", function(event) | |
| 483 local reply, stanza, origin = event.reply, event.stanza, event.origin; | |
| 484 | |
| 485 local is_self = stanza.attr.to == nil; | |
| 486 local user_bare = jid_bare(stanza.attr.to); | |
| 487 local username = jid_split(stanza.attr.to); | |
| 488 if is_self then | |
| 489 username = origin.username; | |
| 490 user_bare = jid_join(username, host); | |
| 491 end | |
| 492 local service = get_pep_service(username); | |
| 493 | 481 |
| 494 local ok, ret = service:get_nodes(jid_bare(stanza.attr.from)); | 482 local ok, ret = service:get_nodes(jid_bare(stanza.attr.from)); |
| 495 if not ok then return; end | 483 if not ok then return; end |
| 496 | 484 |
| 497 for node, node_obj in pairs(ret) do | 485 for node, node_obj in pairs(ret) do |
