mod_tls: Build <starttls/> as a stanza instead of with string concatenation
[prosody.git] / core / moduleapi.lua
index 11d1fdc13ddfb319ff3263e5df168417789cbacb..0cb1f1e7f13a552bb532a6d82cfc1ad761101432 100644 (file)
@@ -16,6 +16,7 @@ local pluginloader = require "util.pluginloader";
 local timer = require "util.timer";
 local resolve_relative_path = require"util.paths".resolve_relative_path;
 local measure = require "core.statsmanager".measure;
+local st = require "util.stanza";
 
 local t_insert, t_remove, t_concat = table.insert, table.remove, table.concat;
 local error, setmetatable, type = error, setmetatable, type;
@@ -55,7 +56,7 @@ function api:set_global()
        self.host = "*";
        -- Update the logger
        local _log = logger.init("mod_"..self.name);
-       self.log = function (self, ...) return _log(...); end;
+       self.log = function (self, ...) return _log(...); end; --luacheck: ignore self
        self._log = _log;
        self.global = true;
 end
@@ -63,8 +64,8 @@ end
 function api:add_feature(xmlns)
        self:add_item("feature", xmlns);
 end
-function api:add_identity(category, type, name)
-       self:add_item("identity", {category = category, type = type, name = name});
+function api:add_identity(category, identity_type, name)
+       self:add_item("identity", {category = category, type = identity_type, name = name});
 end
 function api:add_extension(data)
        self:add_item("extension", data);
@@ -75,9 +76,9 @@ function api:has_feature(xmlns)
        end
        return false;
 end
-function api:has_identity(category, type, name)
+function api:has_identity(category, identity_type, name)
        for _, id in ipairs(self:get_host_items("identity")) do
-               if id.category == category and id.type == type and id.name == name then
+               if id.category == category and id.type == identity_type and id.name == name then
                        return true;
                end
        end
@@ -94,6 +95,7 @@ function api:hook_object_event(object, event, handler, priority)
 end
 
 function api:unhook_object_event(object, event, handler)
+       self.event_handlers:set(object, event, handler, nil);
        return object.remove_handler(event, handler);
 end
 
@@ -328,11 +330,11 @@ function api:get_host_items(key)
        return result;
 end
 
-function api:handle_items(type, added_cb, removed_cb, existing)
-       self:hook("item-added/"..type, added_cb);
-       self:hook("item-removed/"..type, removed_cb);
+function api:handle_items(item_type, added_cb, removed_cb, existing)
+       self:hook("item-added/"..item_type, added_cb);
+       self:hook("item-removed/"..item_type, removed_cb);
        if existing ~= false then
-               for _, item in ipairs(self:get_host_items(type)) do
+               for _, item in ipairs(self:get_host_items(item_type)) do
                        added_cb({ item = item });
                end
        end
@@ -388,19 +390,19 @@ function api:load_resource(path, mode)
        return io.open(path, mode);
 end
 
-function api:open_store(name, type)
-       return require"core.storagemanager".open(self.host, name or self.name, type);
+function api:open_store(name, store_type)
+       return require"core.storagemanager".open(self.host, name or self.name, store_type);
 end
 
-function api:measure(name, type)
-       return measure(type, "/"..self.host.."/mod_"..self.name.."/"..name);
+function api:measure(name, stat_type)
+       return measure(stat_type, "/"..self.host.."/mod_"..self.name.."/"..name);
 end
 
 function api:measure_object_event(events_object, event_name, stat_name)
        local m = self:measure(stat_name or event_name, "duration");
-       local function handler(handlers, event_name, event_data)
+       local function handler(handlers, _event_name, _event_data)
                local finished = m();
-               local ret = handlers(event_name, event_data);
+               local ret = handlers(_event_name, _event_data);
                finished();
                return ret;
        end