Software /
code /
prosody-modules
Comparison
mod_vjud/mod_vjud.lua @ 734:81de1e446bfe
mod_vjud: Don't break on undefined properties.
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Sun, 01 Jul 2012 13:51:26 +0200 |
parent | 733:dd3b30c0dc8a |
child | 742:da8f561d79b4 |
comparison
equal
deleted
inserted
replaced
733:dd3b30c0dc8a | 734:81de1e446bfe |
---|---|
3 | 3 |
4 local usermanager = require "core.usermanager"; | 4 local usermanager = require "core.usermanager"; |
5 local dataforms_new = require "util.dataforms".new; | 5 local dataforms_new = require "util.dataforms".new; |
6 local jid_split = require "util.jid".prepped_split; | 6 local jid_split = require "util.jid".prepped_split; |
7 local vcard = module:require "vcard"; | 7 local vcard = module:require "vcard"; |
8 local rawget, rawset = rawget, rawset; | |
8 | 9 |
9 local st = require "util.stanza"; | 10 local st = require "util.stanza"; |
10 local template = require "util.template"; | 11 local template = require "util.template"; |
11 | 12 |
12 local get_reply = template[[ | 13 local get_reply = template[[ |
46 type = "boolean", | 47 type = "boolean", |
47 }, | 48 }, |
48 }; | 49 }; |
49 local vCard_mt = { | 50 local vCard_mt = { |
50 __index = function(t, k) | 51 __index = function(t, k) |
52 if type(k) ~= "string" then return nil end | |
51 for i=1,#t do | 53 for i=1,#t do |
52 if t[i].name == k then | 54 local t_i = rawget(t, i); |
53 t[k] = t[i]; | 55 if t_i and t_i.name == k then |
54 return t[i] | 56 rawset(t, k, t_i); |
57 return t_i; | |
55 end | 58 end |
56 end | 59 end |
57 end | 60 end |
58 }; | 61 }; |
59 | 62 |
60 local function get_user_vcard(user) | 63 local function get_user_vcard(user) |
61 local vCard = dm_load(user, module.host, "vcard"); | 64 local vCard = dm_load(user, module.host, "vcard"); |
62 if vCard then | 65 if vCard then |
66 module:log("warn", require"util.serialization".serialize(vCard)); | |
63 vCard = st.deserialize(vCard); | 67 vCard = st.deserialize(vCard); |
68 module:log("warn", require"util.serialization".serialize(vCard)); | |
64 vCard = vcard.from_xep54(vCard); | 69 vCard = vcard.from_xep54(vCard); |
70 module:log("warn", require"util.serialization".serialize(vCard)); | |
65 return setmetatable(vCard, vCard_mt); | 71 return setmetatable(vCard, vCard_mt); |
66 end | 72 end |
67 end | 73 end |
68 | 74 |
69 local at_host = "@"..module.host; | 75 local at_host = "@"..module.host; |