Comparison

core/moduleapi.lua @ 5412:a5fcda77c6b1

moduleapi: have get_host_items wrap on get_items from modulemanager, also add has_{feature/identity} to the API.
author Marco Cirillo <maranda@lightwitch.org>
date Mon, 01 Apr 2013 23:44:28 +0000
parent 5377:898454038524
child 5434:9dd36e20c1e3
comparison
equal deleted inserted replaced
5411:82b3ddba0ec7 5412:a5fcda77c6b1
59 function api:add_identity(category, type, name) 59 function api:add_identity(category, type, name)
60 self:add_item("identity", {category = category, type = type, name = name}); 60 self:add_item("identity", {category = category, type = type, name = name});
61 end 61 end
62 function api:add_extension(data) 62 function api:add_extension(data)
63 self:add_item("extension", data); 63 self:add_item("extension", data);
64 end
65 function api:has_feature(xmlns)
66 for _, feature in ipairs(self:get_host_items("feature")) do
67 if feature == xmlns then return true; end
68 end
69 return false;
70 end
71 function api:has_identity(category, type, name)
72 for _, id in ipairs(self:get_host_items("identity")) do
73 if id.category == category and id.type == type and id.name == name then
74 return true;
75 end
76 end
77 return false;
64 end 78 end
65 79
66 function api:fire_event(...) 80 function api:fire_event(...)
67 return (hosts[self.host] or prosody).events.fire_event(...); 81 return (hosts[self.host] or prosody).events.fire_event(...);
68 end 82 end
269 end 283 end
270 end 284 end
271 end 285 end
272 286
273 function api:get_host_items(key) 287 function api:get_host_items(key)
274 local result = {}; 288 local result = modulemanager.get_items(key, self.host) or {};
275 for mod_name, module in pairs(modulemanager.get_modules(self.host)) do
276 module = module.module;
277 if module.items then
278 for _, item in ipairs(module.items[key] or NULL) do
279 t_insert(result, item);
280 end
281 end
282 end
283 for mod_name, module in pairs(modulemanager.get_modules("*")) do
284 module = module.module;
285 if module.items then
286 for _, item in ipairs(module.items[key] or NULL) do
287 t_insert(result, item);
288 end
289 end
290 end
291 return result; 289 return result;
292 end 290 end
293 291
294 function api:handle_items(type, added_cb, removed_cb, existing) 292 function api:handle_items(type, added_cb, removed_cb, existing)
295 self:hook("item-added/"..type, added_cb); 293 self:hook("item-added/"..type, added_cb);