Software /
code /
prosody
Annotate
plugins/mod_vcard_legacy.lua @ 9254:2ffbcad8ec50
mod_vcard_legacy: Add support for address field
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Tue, 21 Aug 2018 16:34:46 +0200 |
parent | 9253:dbe3ae6f9746 |
child | 9255:2aa40526df7b |
rev | line source |
---|---|
9249
506aabdb13bc
mod_vcard_legacy: Responds to vcard-temp queries with translated vcard4 data
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
1 local st = require "util.stanza" |
506aabdb13bc
mod_vcard_legacy: Responds to vcard-temp queries with translated vcard4 data
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
2 local jid_split = require "util.jid".split; |
506aabdb13bc
mod_vcard_legacy: Responds to vcard-temp queries with translated vcard4 data
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
3 |
506aabdb13bc
mod_vcard_legacy: Responds to vcard-temp queries with translated vcard4 data
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
4 local mod_pep = module:depends("pep"); |
506aabdb13bc
mod_vcard_legacy: Responds to vcard-temp queries with translated vcard4 data
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
5 |
506aabdb13bc
mod_vcard_legacy: Responds to vcard-temp queries with translated vcard4 data
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
6 module:add_feature("vcard-temp"); |
506aabdb13bc
mod_vcard_legacy: Responds to vcard-temp queries with translated vcard4 data
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
7 module:add_feature("urn:xmpp:pep-vcard-conversion:0"); |
506aabdb13bc
mod_vcard_legacy: Responds to vcard-temp queries with translated vcard4 data
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
8 |
506aabdb13bc
mod_vcard_legacy: Responds to vcard-temp queries with translated vcard4 data
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
9 -- Simple translations |
506aabdb13bc
mod_vcard_legacy: Responds to vcard-temp queries with translated vcard4 data
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
10 -- <foo><text>hey</text></foo> -> <FOO>hey</FOO> |
506aabdb13bc
mod_vcard_legacy: Responds to vcard-temp queries with translated vcard4 data
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
11 local simple_map = { |
506aabdb13bc
mod_vcard_legacy: Responds to vcard-temp queries with translated vcard4 data
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
12 nickname = "text"; |
506aabdb13bc
mod_vcard_legacy: Responds to vcard-temp queries with translated vcard4 data
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
13 title = "text"; |
506aabdb13bc
mod_vcard_legacy: Responds to vcard-temp queries with translated vcard4 data
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
14 role = "text"; |
506aabdb13bc
mod_vcard_legacy: Responds to vcard-temp queries with translated vcard4 data
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
15 categories = "text"; |
506aabdb13bc
mod_vcard_legacy: Responds to vcard-temp queries with translated vcard4 data
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
16 note = "text"; |
506aabdb13bc
mod_vcard_legacy: Responds to vcard-temp queries with translated vcard4 data
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
17 url = "uri"; |
506aabdb13bc
mod_vcard_legacy: Responds to vcard-temp queries with translated vcard4 data
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
18 bday = "date"; |
506aabdb13bc
mod_vcard_legacy: Responds to vcard-temp queries with translated vcard4 data
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
19 } |
506aabdb13bc
mod_vcard_legacy: Responds to vcard-temp queries with translated vcard4 data
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
20 |
506aabdb13bc
mod_vcard_legacy: Responds to vcard-temp queries with translated vcard4 data
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
21 module:hook("iq-get/bare/vcard-temp:vCard", function (event) |
506aabdb13bc
mod_vcard_legacy: Responds to vcard-temp queries with translated vcard4 data
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
22 local origin, stanza = event.origin, event.stanza; |
506aabdb13bc
mod_vcard_legacy: Responds to vcard-temp queries with translated vcard4 data
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
23 local pep_service = mod_pep.get_pep_service(jid_split(stanza.attr.to) or origin.username); |
506aabdb13bc
mod_vcard_legacy: Responds to vcard-temp queries with translated vcard4 data
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
24 local ok, id, vcard4_item = pep_service:get_last_item("urn:xmpp:vcard4", stanza.attr.from); |
506aabdb13bc
mod_vcard_legacy: Responds to vcard-temp queries with translated vcard4 data
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
25 |
506aabdb13bc
mod_vcard_legacy: Responds to vcard-temp queries with translated vcard4 data
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
26 local vcard_temp = st.stanza("vCard", { xmlns = "vcard-temp" }); |
506aabdb13bc
mod_vcard_legacy: Responds to vcard-temp queries with translated vcard4 data
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
27 if ok and vcard4_item then |
506aabdb13bc
mod_vcard_legacy: Responds to vcard-temp queries with translated vcard4 data
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
28 local vcard4 = vcard4_item.tags[1]; |
506aabdb13bc
mod_vcard_legacy: Responds to vcard-temp queries with translated vcard4 data
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
29 |
506aabdb13bc
mod_vcard_legacy: Responds to vcard-temp queries with translated vcard4 data
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
30 local fn = vcard4:get_child("fn"); |
506aabdb13bc
mod_vcard_legacy: Responds to vcard-temp queries with translated vcard4 data
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
31 vcard_temp:text_tag("FN", fn and fn:get_child_text("text")); |
506aabdb13bc
mod_vcard_legacy: Responds to vcard-temp queries with translated vcard4 data
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
32 |
506aabdb13bc
mod_vcard_legacy: Responds to vcard-temp queries with translated vcard4 data
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
33 local v4n = vcard4:get_child("n"); |
506aabdb13bc
mod_vcard_legacy: Responds to vcard-temp queries with translated vcard4 data
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
34 vcard_temp:tag("N") |
506aabdb13bc
mod_vcard_legacy: Responds to vcard-temp queries with translated vcard4 data
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
35 :text_tag("FAMILY", v4n and v4n:get_child_text("surname")) |
506aabdb13bc
mod_vcard_legacy: Responds to vcard-temp queries with translated vcard4 data
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
36 :text_tag("GIVEN", v4n and v4n:get_child_text("given")) |
506aabdb13bc
mod_vcard_legacy: Responds to vcard-temp queries with translated vcard4 data
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
37 :text_tag("MIDDLE", v4n and v4n:get_child_text("additional")) |
506aabdb13bc
mod_vcard_legacy: Responds to vcard-temp queries with translated vcard4 data
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
38 :text_tag("PREFIX", v4n and v4n:get_child_text("prefix")) |
506aabdb13bc
mod_vcard_legacy: Responds to vcard-temp queries with translated vcard4 data
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
39 :text_tag("SUFFIX", v4n and v4n:get_child_text("suffix")) |
506aabdb13bc
mod_vcard_legacy: Responds to vcard-temp queries with translated vcard4 data
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
40 :up(); |
506aabdb13bc
mod_vcard_legacy: Responds to vcard-temp queries with translated vcard4 data
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
41 |
506aabdb13bc
mod_vcard_legacy: Responds to vcard-temp queries with translated vcard4 data
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
42 for tag in vcard4:childtags() do |
506aabdb13bc
mod_vcard_legacy: Responds to vcard-temp queries with translated vcard4 data
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
43 local typ = simple_map[tag.name]; |
506aabdb13bc
mod_vcard_legacy: Responds to vcard-temp queries with translated vcard4 data
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
44 if typ then |
506aabdb13bc
mod_vcard_legacy: Responds to vcard-temp queries with translated vcard4 data
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
45 local text = tag:get_child_text(typ); |
506aabdb13bc
mod_vcard_legacy: Responds to vcard-temp queries with translated vcard4 data
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
46 if text then |
506aabdb13bc
mod_vcard_legacy: Responds to vcard-temp queries with translated vcard4 data
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
47 vcard_temp:text_tag(tag.name:upper(), text); |
506aabdb13bc
mod_vcard_legacy: Responds to vcard-temp queries with translated vcard4 data
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
48 end |
9251
3f31e10e8256
mod_vcard_legacy: Add translation of email field
Kim Alvefur <zash@zash.se>
parents:
9250
diff
changeset
|
49 elseif tag.name == "email" then |
3f31e10e8256
mod_vcard_legacy: Add translation of email field
Kim Alvefur <zash@zash.se>
parents:
9250
diff
changeset
|
50 local text = tag:get_child_text("text"); |
3f31e10e8256
mod_vcard_legacy: Add translation of email field
Kim Alvefur <zash@zash.se>
parents:
9250
diff
changeset
|
51 if text then |
3f31e10e8256
mod_vcard_legacy: Add translation of email field
Kim Alvefur <zash@zash.se>
parents:
9250
diff
changeset
|
52 vcard_temp:tag("EMAIL") |
3f31e10e8256
mod_vcard_legacy: Add translation of email field
Kim Alvefur <zash@zash.se>
parents:
9250
diff
changeset
|
53 :text_tag("USERID", text) |
3f31e10e8256
mod_vcard_legacy: Add translation of email field
Kim Alvefur <zash@zash.se>
parents:
9250
diff
changeset
|
54 :tag("INTERNET"):up(); |
3f31e10e8256
mod_vcard_legacy: Add translation of email field
Kim Alvefur <zash@zash.se>
parents:
9250
diff
changeset
|
55 if tag:find"parameters/type/text#" == "home" then |
3f31e10e8256
mod_vcard_legacy: Add translation of email field
Kim Alvefur <zash@zash.se>
parents:
9250
diff
changeset
|
56 vcard_temp:tag("HOME"):up(); |
3f31e10e8256
mod_vcard_legacy: Add translation of email field
Kim Alvefur <zash@zash.se>
parents:
9250
diff
changeset
|
57 elseif tag:find"parameters/type/text#" == "work" then |
3f31e10e8256
mod_vcard_legacy: Add translation of email field
Kim Alvefur <zash@zash.se>
parents:
9250
diff
changeset
|
58 vcard_temp:tag("WORK"):up(); |
3f31e10e8256
mod_vcard_legacy: Add translation of email field
Kim Alvefur <zash@zash.se>
parents:
9250
diff
changeset
|
59 end |
3f31e10e8256
mod_vcard_legacy: Add translation of email field
Kim Alvefur <zash@zash.se>
parents:
9250
diff
changeset
|
60 vcard_temp:up(); |
3f31e10e8256
mod_vcard_legacy: Add translation of email field
Kim Alvefur <zash@zash.se>
parents:
9250
diff
changeset
|
61 end |
9252
292d283c7694
mod_vcard_legacy: Add translation of telephone field
Kim Alvefur <zash@zash.se>
parents:
9251
diff
changeset
|
62 elseif tag.name == "tel" then |
292d283c7694
mod_vcard_legacy: Add translation of telephone field
Kim Alvefur <zash@zash.se>
parents:
9251
diff
changeset
|
63 local text = tag:get_child_text("uri"); |
292d283c7694
mod_vcard_legacy: Add translation of telephone field
Kim Alvefur <zash@zash.se>
parents:
9251
diff
changeset
|
64 if text then |
292d283c7694
mod_vcard_legacy: Add translation of telephone field
Kim Alvefur <zash@zash.se>
parents:
9251
diff
changeset
|
65 if text:sub(1, 4) == "tel:" then |
292d283c7694
mod_vcard_legacy: Add translation of telephone field
Kim Alvefur <zash@zash.se>
parents:
9251
diff
changeset
|
66 text = text:sub(5) |
292d283c7694
mod_vcard_legacy: Add translation of telephone field
Kim Alvefur <zash@zash.se>
parents:
9251
diff
changeset
|
67 end |
292d283c7694
mod_vcard_legacy: Add translation of telephone field
Kim Alvefur <zash@zash.se>
parents:
9251
diff
changeset
|
68 vcard_temp:tag("TEL"):text_tag("NUMBER", text); |
292d283c7694
mod_vcard_legacy: Add translation of telephone field
Kim Alvefur <zash@zash.se>
parents:
9251
diff
changeset
|
69 if tag:find"parameters/type/text#" == "home" then |
292d283c7694
mod_vcard_legacy: Add translation of telephone field
Kim Alvefur <zash@zash.se>
parents:
9251
diff
changeset
|
70 vcard_temp:tag("HOME"):up(); |
292d283c7694
mod_vcard_legacy: Add translation of telephone field
Kim Alvefur <zash@zash.se>
parents:
9251
diff
changeset
|
71 elseif tag:find"parameters/type/text#" == "work" then |
292d283c7694
mod_vcard_legacy: Add translation of telephone field
Kim Alvefur <zash@zash.se>
parents:
9251
diff
changeset
|
72 vcard_temp:tag("WORK"):up(); |
292d283c7694
mod_vcard_legacy: Add translation of telephone field
Kim Alvefur <zash@zash.se>
parents:
9251
diff
changeset
|
73 end |
292d283c7694
mod_vcard_legacy: Add translation of telephone field
Kim Alvefur <zash@zash.se>
parents:
9251
diff
changeset
|
74 vcard_temp:up(); |
292d283c7694
mod_vcard_legacy: Add translation of telephone field
Kim Alvefur <zash@zash.se>
parents:
9251
diff
changeset
|
75 end |
9254
2ffbcad8ec50
mod_vcard_legacy: Add support for address field
Kim Alvefur <zash@zash.se>
parents:
9253
diff
changeset
|
76 elseif tag.name == "adr" then |
2ffbcad8ec50
mod_vcard_legacy: Add support for address field
Kim Alvefur <zash@zash.se>
parents:
9253
diff
changeset
|
77 vcard_temp:tag("ADR") |
2ffbcad8ec50
mod_vcard_legacy: Add support for address field
Kim Alvefur <zash@zash.se>
parents:
9253
diff
changeset
|
78 :text_tag("POBOX", tag:get_child_text("pobox")) |
2ffbcad8ec50
mod_vcard_legacy: Add support for address field
Kim Alvefur <zash@zash.se>
parents:
9253
diff
changeset
|
79 :text_tag("EXTADD", tag:get_child_text("ext")) |
2ffbcad8ec50
mod_vcard_legacy: Add support for address field
Kim Alvefur <zash@zash.se>
parents:
9253
diff
changeset
|
80 :text_tag("STREET", tag:get_child_text("street")) |
2ffbcad8ec50
mod_vcard_legacy: Add support for address field
Kim Alvefur <zash@zash.se>
parents:
9253
diff
changeset
|
81 :text_tag("LOCALITY", tag:get_child_text("locality")) |
2ffbcad8ec50
mod_vcard_legacy: Add support for address field
Kim Alvefur <zash@zash.se>
parents:
9253
diff
changeset
|
82 :text_tag("REGION", tag:get_child_text("region")) |
2ffbcad8ec50
mod_vcard_legacy: Add support for address field
Kim Alvefur <zash@zash.se>
parents:
9253
diff
changeset
|
83 :text_tag("PCODE", tag:get_child_text("code")) |
2ffbcad8ec50
mod_vcard_legacy: Add support for address field
Kim Alvefur <zash@zash.se>
parents:
9253
diff
changeset
|
84 :text_tag("CTRY", tag:get_child_text("country")); |
2ffbcad8ec50
mod_vcard_legacy: Add support for address field
Kim Alvefur <zash@zash.se>
parents:
9253
diff
changeset
|
85 if tag:find"parameters/type/text#" == "home" then |
2ffbcad8ec50
mod_vcard_legacy: Add support for address field
Kim Alvefur <zash@zash.se>
parents:
9253
diff
changeset
|
86 vcard_temp:tag("HOME"):up(); |
2ffbcad8ec50
mod_vcard_legacy: Add support for address field
Kim Alvefur <zash@zash.se>
parents:
9253
diff
changeset
|
87 elseif tag:find"parameters/type/text#" == "work" then |
2ffbcad8ec50
mod_vcard_legacy: Add support for address field
Kim Alvefur <zash@zash.se>
parents:
9253
diff
changeset
|
88 vcard_temp:tag("WORK"):up(); |
2ffbcad8ec50
mod_vcard_legacy: Add support for address field
Kim Alvefur <zash@zash.se>
parents:
9253
diff
changeset
|
89 end |
2ffbcad8ec50
mod_vcard_legacy: Add support for address field
Kim Alvefur <zash@zash.se>
parents:
9253
diff
changeset
|
90 vcard_temp:up(); |
9249
506aabdb13bc
mod_vcard_legacy: Responds to vcard-temp queries with translated vcard4 data
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
91 end |
506aabdb13bc
mod_vcard_legacy: Responds to vcard-temp queries with translated vcard4 data
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
92 end |
506aabdb13bc
mod_vcard_legacy: Responds to vcard-temp queries with translated vcard4 data
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
93 end |
506aabdb13bc
mod_vcard_legacy: Responds to vcard-temp queries with translated vcard4 data
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
94 |
9253
dbe3ae6f9746
mod_vcard_legacy: Include avatar data from XEP-0084 PEP node
Kim Alvefur <zash@zash.se>
parents:
9252
diff
changeset
|
95 local meta_ok, avatar_meta = pep_service:get_items("urn:xmpp:avatar:metadata", stanza.attr.from); |
dbe3ae6f9746
mod_vcard_legacy: Include avatar data from XEP-0084 PEP node
Kim Alvefur <zash@zash.se>
parents:
9252
diff
changeset
|
96 local data_ok, avatar_data = pep_service:get_items("urn:xmpp:avatar:data", stanza.attr.from); |
dbe3ae6f9746
mod_vcard_legacy: Include avatar data from XEP-0084 PEP node
Kim Alvefur <zash@zash.se>
parents:
9252
diff
changeset
|
97 if meta_ok and data_ok then |
dbe3ae6f9746
mod_vcard_legacy: Include avatar data from XEP-0084 PEP node
Kim Alvefur <zash@zash.se>
parents:
9252
diff
changeset
|
98 for _, hash in ipairs(avatar_meta) do |
dbe3ae6f9746
mod_vcard_legacy: Include avatar data from XEP-0084 PEP node
Kim Alvefur <zash@zash.se>
parents:
9252
diff
changeset
|
99 local meta = avatar_meta[hash]; |
dbe3ae6f9746
mod_vcard_legacy: Include avatar data from XEP-0084 PEP node
Kim Alvefur <zash@zash.se>
parents:
9252
diff
changeset
|
100 local data = avatar_data[hash]; |
dbe3ae6f9746
mod_vcard_legacy: Include avatar data from XEP-0084 PEP node
Kim Alvefur <zash@zash.se>
parents:
9252
diff
changeset
|
101 local info = meta.tags[1]:get_child("info"); |
dbe3ae6f9746
mod_vcard_legacy: Include avatar data from XEP-0084 PEP node
Kim Alvefur <zash@zash.se>
parents:
9252
diff
changeset
|
102 vcard_temp:tag("PHOTO") |
dbe3ae6f9746
mod_vcard_legacy: Include avatar data from XEP-0084 PEP node
Kim Alvefur <zash@zash.se>
parents:
9252
diff
changeset
|
103 :text_tag("TYPE", info and info.attr.type) |
dbe3ae6f9746
mod_vcard_legacy: Include avatar data from XEP-0084 PEP node
Kim Alvefur <zash@zash.se>
parents:
9252
diff
changeset
|
104 :text_tag("BINVAL", data.tags[1]:get_text()) |
dbe3ae6f9746
mod_vcard_legacy: Include avatar data from XEP-0084 PEP node
Kim Alvefur <zash@zash.se>
parents:
9252
diff
changeset
|
105 :up(); |
dbe3ae6f9746
mod_vcard_legacy: Include avatar data from XEP-0084 PEP node
Kim Alvefur <zash@zash.se>
parents:
9252
diff
changeset
|
106 end |
dbe3ae6f9746
mod_vcard_legacy: Include avatar data from XEP-0084 PEP node
Kim Alvefur <zash@zash.se>
parents:
9252
diff
changeset
|
107 end |
dbe3ae6f9746
mod_vcard_legacy: Include avatar data from XEP-0084 PEP node
Kim Alvefur <zash@zash.se>
parents:
9252
diff
changeset
|
108 |
9249
506aabdb13bc
mod_vcard_legacy: Responds to vcard-temp queries with translated vcard4 data
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
109 origin.send(st.reply(stanza):add_child(vcard_temp)); |
506aabdb13bc
mod_vcard_legacy: Responds to vcard-temp queries with translated vcard4 data
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
110 return true; |
506aabdb13bc
mod_vcard_legacy: Responds to vcard-temp queries with translated vcard4 data
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
111 end); |
9250
9a8006f9e983
mod_vcard_legacy: Attach vcard-temp avatar hash to outgoing presence
Kim Alvefur <zash@zash.se>
parents:
9249
diff
changeset
|
112 |
9a8006f9e983
mod_vcard_legacy: Attach vcard-temp avatar hash to outgoing presence
Kim Alvefur <zash@zash.se>
parents:
9249
diff
changeset
|
113 local function inject_xep153(event) |
9a8006f9e983
mod_vcard_legacy: Attach vcard-temp avatar hash to outgoing presence
Kim Alvefur <zash@zash.se>
parents:
9249
diff
changeset
|
114 local origin, stanza = event.origin, event.stanza; |
9a8006f9e983
mod_vcard_legacy: Attach vcard-temp avatar hash to outgoing presence
Kim Alvefur <zash@zash.se>
parents:
9249
diff
changeset
|
115 local username = origin.username; |
9a8006f9e983
mod_vcard_legacy: Attach vcard-temp avatar hash to outgoing presence
Kim Alvefur <zash@zash.se>
parents:
9249
diff
changeset
|
116 if not username then return end |
9a8006f9e983
mod_vcard_legacy: Attach vcard-temp avatar hash to outgoing presence
Kim Alvefur <zash@zash.se>
parents:
9249
diff
changeset
|
117 local pep = mod_pep.get_pep_service(username); |
9a8006f9e983
mod_vcard_legacy: Attach vcard-temp avatar hash to outgoing presence
Kim Alvefur <zash@zash.se>
parents:
9249
diff
changeset
|
118 |
9a8006f9e983
mod_vcard_legacy: Attach vcard-temp avatar hash to outgoing presence
Kim Alvefur <zash@zash.se>
parents:
9249
diff
changeset
|
119 stanza:remove_children("x", "vcard-temp:x:update"); |
9a8006f9e983
mod_vcard_legacy: Attach vcard-temp avatar hash to outgoing presence
Kim Alvefur <zash@zash.se>
parents:
9249
diff
changeset
|
120 local x_update = st.stanza("x", { xmlns = "vcard-temp:x:update" }); |
9a8006f9e983
mod_vcard_legacy: Attach vcard-temp avatar hash to outgoing presence
Kim Alvefur <zash@zash.se>
parents:
9249
diff
changeset
|
121 local ok, avatar_hash = pep:get_last_item("urn:xmpp:avatar:metadata", true); |
9a8006f9e983
mod_vcard_legacy: Attach vcard-temp avatar hash to outgoing presence
Kim Alvefur <zash@zash.se>
parents:
9249
diff
changeset
|
122 if ok and avatar_hash then |
9a8006f9e983
mod_vcard_legacy: Attach vcard-temp avatar hash to outgoing presence
Kim Alvefur <zash@zash.se>
parents:
9249
diff
changeset
|
123 x_update:text_tag("photo", avatar_hash); |
9a8006f9e983
mod_vcard_legacy: Attach vcard-temp avatar hash to outgoing presence
Kim Alvefur <zash@zash.se>
parents:
9249
diff
changeset
|
124 end |
9a8006f9e983
mod_vcard_legacy: Attach vcard-temp avatar hash to outgoing presence
Kim Alvefur <zash@zash.se>
parents:
9249
diff
changeset
|
125 stanza:add_direct_child(x_update); |
9a8006f9e983
mod_vcard_legacy: Attach vcard-temp avatar hash to outgoing presence
Kim Alvefur <zash@zash.se>
parents:
9249
diff
changeset
|
126 end |
9a8006f9e983
mod_vcard_legacy: Attach vcard-temp avatar hash to outgoing presence
Kim Alvefur <zash@zash.se>
parents:
9249
diff
changeset
|
127 |
9a8006f9e983
mod_vcard_legacy: Attach vcard-temp avatar hash to outgoing presence
Kim Alvefur <zash@zash.se>
parents:
9249
diff
changeset
|
128 module:hook("pre-presence/full", inject_xep153, 1); |
9a8006f9e983
mod_vcard_legacy: Attach vcard-temp avatar hash to outgoing presence
Kim Alvefur <zash@zash.se>
parents:
9249
diff
changeset
|
129 module:hook("pre-presence/bare", inject_xep153, 1); |
9a8006f9e983
mod_vcard_legacy: Attach vcard-temp avatar hash to outgoing presence
Kim Alvefur <zash@zash.se>
parents:
9249
diff
changeset
|
130 module:hook("pre-presence/host", inject_xep153, 1); |