Software / code / prosody-modules
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") |