local prosody = prosody;
local hosts = prosody.hosts;
-local core_post_stanza = prosody.core_post_stanza;
+
+-- FIXME: This assert() is to try and catch an obscure bug (2013-04-05)
+local core_post_stanza = assert(prosody.core_post_stanza,
+ "prosody.core_post_stanza is nil, please report this as a bug");
-- Registry of shared module data
local shared_data = setmetatable({}, { __mode = "v" });
function api:add_extension(data)
self:add_item("extension", data);
end
+function api:has_feature(xmlns)
+ for _, feature in ipairs(self:get_host_items("feature")) do
+ if feature == xmlns then return true; end
+ end
+ return false;
+end
+function api:has_identity(category, 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
+ return true;
+ end
+ end
+ return false;
+end
function api:fire_event(...)
return (hosts[self.host] or prosody).events.fire_event(...);
end
function api:get_option(name, default_value)
- local value = config.get(self.host, self.name, name);
+ local value = config.get(self.host, name);
if value == nil then
- value = config.get(self.host, "core", name);
- if value == nil then
- value = default_value;
- end
+ value = default_value;
end
return value;
end
end
function api:get_host_items(key)
- local result = {};
- for mod_name, module in pairs(modulemanager.get_modules(self.host)) do
- module = module.module;
- if module.items then
- for _, item in ipairs(module.items[key] or NULL) do
- t_insert(result, item);
- end
- end
- end
- for mod_name, module in pairs(modulemanager.get_modules("*")) do
- module = module.module;
- if module.items then
- for _, item in ipairs(module.items[key] or NULL) do
- t_insert(result, item);
- end
- end
- end
+ local result = modulemanager.get_items(key, self.host) or {};
return result;
end
return io.open(path, mode);
end
+function api:open_store(name, type)
+ return storagemanager.open(self.host, name or self.name, type);
+end
+
return api;