Comparison

mod_rest/mod_rest.lua @ 4922:c83b009b5bc5

mod_rest: Add configuration of which stanzas to route to callback Makes it simpler to build APIs that only handle a certain kind of stanzas, letting them be handled by the unhandled stanza handler instead of having to write code to ignore certain kinds of stanzas.
author Kim Alvefur <zash@zash.se>
date Sat, 09 Apr 2022 01:04:25 +0200
parent 4921:816b23e09c20
child 4941:e7b9bc629ecc
comparison
equal deleted inserted replaced
4921:816b23e09c20 4922:c83b009b5bc5
551 end); 551 end);
552 552
553 return true; 553 return true;
554 end 554 end
555 555
556 if module:get_host_type() == "component" then 556 local send_kinds = module:get_option_set("rest_callback_stanzas", { "message", "presence", "iq" });
557 module:hook("iq/bare", handle_stanza, -1); 557
558 module:hook("message/bare", handle_stanza, -1); 558 local event_presets = {
559 module:hook("presence/bare", handle_stanza, -1); 559 -- Don't override everything on normal VirtualHosts by default
560 module:hook("iq/full", handle_stanza, -1); 560 ["local"] = { "host" },
561 module:hook("message/full", handle_stanza, -1); 561 -- Comonents get to handle all kinds of stanzas
562 module:hook("presence/full", handle_stanza, -1); 562 ["component"] = { "bare", "full", "host" },
563 module:hook("iq/host", handle_stanza, -1); 563 };
564 module:hook("message/host", handle_stanza, -1); 564 local hook_events = module:get_option_set("rest_callback_events", event_presets[module:get_host_type()]);
565 module:hook("presence/host", handle_stanza, -1); 565 for kind in send_kinds do
566 else 566 for event in hook_events do
567 -- Don't override everything on normal VirtualHosts 567 module:hook(kind.."/"..event, handle_stanza, -1);
568 module:hook("iq/host", handle_stanza, -1); 568 end
569 module:hook("message/host", handle_stanza, -1);
570 module:hook("presence/host", handle_stanza, -1);
571 end 569 end
572 end 570 end
573 571
574 local supported_errors = { 572 local supported_errors = {
575 "text/html", 573 "text/html",