Comparison

mod_http_presence/mod_http_presence.lua @ 6332:9dcdb56f75dd

mod_http_presence: news flash: order of vcard is not always the same (fixes 500 on nickname)
author Nicholas George <wirlaburla@worlio.com>
date Mon, 07 Jul 2025 11:39:16 -0500
parent 6330:27e061d455b9
comparison
equal deleted inserted replaced
6331:3f75ac4311bf 6332:9dcdb56f75dd
86 if not ok then 86 if not ok then
87 module:log("debug", "Failed to get nick for %s: %s", bare_jid, "Not OK"); 87 module:log("debug", "Failed to get nick for %s: %s", bare_jid, "Not OK");
88 return nil; 88 return nil;
89 end 89 end
90 90
91 local nickname; 91 if nick_item and nick_item.tags and nick_item.tags[1] and nick_item.tags[1].tags then
92 if nick_item and nick_item.tags and nick_item.tags[1] and nick_item.tags[1].tags and nick_item.tags[1].tags[2] then 92 for _, tag in ipairs(nick_item.tags[1].tags) do
93 93 if tag.name == "nickname" and tag.tags and tag.tags[1] and tag.tags[1][1] then
94 local nick_element = nick_item.tags[1].tags[2]; -- <nickname> element 94 nickname = tag.tags[1][1];
95 if nick_element.name == "nickname" and nick_element.tags[1] and nick_element.tags[2][1] then 95 module:log("debug", "Nickname found for JID %s: %s", bare_jid, nickname);
96 nickname = nick_element.tags[2][1]; -- Text content: "Wongo" 96 return nickname;
97 module:log("debug", "Nickname found for JID %s: %s", bare_jid, nickname); 97 end
98 else
99 module:log("debug", "No <nickname> element in vCard4 for JID %s", bare_jid);
100 return nil;
101 end 98 end
102 else 99 else
103 module:log("debug", "Invalid vCard4 item structure for JID %s", bare_jid); 100 module:log("debug", "Invalid vCard4 item structure for JID %s", bare_jid);
104 return nil; 101 return nil;
105 end 102 end
106 103
107 return nickname or jid.node(bare_jid); 104 module:log("debug", "No <nickname> element in vCard4 for JID %s", bare_jid);
105 return jid.node(bare_jid);
108 end 106 end
109 107
110 function get_muc_avatar(bare_jid) 108 function get_muc_avatar(bare_jid)
111 local node = jid.node(bare_jid); 109 local node = jid.node(bare_jid);
112 local vcard_store = storagemanager.open(module.host, "vcard_muc") 110 local vcard_store = storagemanager.open(module.host, "vcard_muc")