aboutsummaryrefslogtreecommitdiffstats
path: root/core/moduleapi.lua
diff options
context:
space:
mode:
Diffstat (limited to 'core/moduleapi.lua')
-rw-r--r--core/moduleapi.lua20
1 files changed, 20 insertions, 0 deletions
diff --git a/core/moduleapi.lua b/core/moduleapi.lua
index 7a4d1fa6..a577c07a 100644
--- a/core/moduleapi.lua
+++ b/core/moduleapi.lua
@@ -22,6 +22,7 @@ local tonumber, tostring = tonumber, tostring;
local prosody = prosody;
local hosts = prosody.hosts;
+local core_post_stanza = prosody.core_post_stanza;
-- Registry of shared module data
local shared_data = setmetatable({}, { __mode = "v" });
@@ -50,6 +51,7 @@ function api:set_global()
local _log = logger.init("mod_"..self.name);
self.log = function (self, ...) return _log(...); end;
self._log = _log;
+ self.global = true;
end
function api:add_feature(xmlns)
@@ -291,4 +293,22 @@ function api:handle_items(type, added_cb, removed_cb, existing)
end
end
+function api:provides(name, item)
+ if not item then item = self.environment; end
+ if not item.name then
+ local item_name = module.name;
+ -- Strip a provider prefix to find the item name
+ -- (e.g. "auth_foo" -> "foo" for an auth provider)
+ if item_name:find(name.."_", 1, true) == 1 then
+ item_name = item_name:sub(#name+2);
+ end
+ item.name = item_name;
+ end
+ self:add_item(name, item);
+end
+
+function api:send(stanza)
+ return core_post_stanza(hosts[self.host], stanza);
+end
+
return api;