plugins/vcard.lua

Sun, 06 Nov 2011 20:04:19 +0100

author
Kim Alvefur <zash@zash.se>
date
Sun, 06 Nov 2011 20:04:19 +0100
changeset 228
c5a4f82e2fd6
parent 195
dc61684e8dbf
child 250
a5ac643a7fd6
permissions
-rw-r--r--

plugins.vcard: Use util.vcard

195
dc61684e8dbf plugins.vcard: Get and set vcard-temp info.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
1 local xmlns_vcard = "vcard-temp";
228
c5a4f82e2fd6 plugins.vcard: Use util.vcard
Kim Alvefur <zash@zash.se>
parents: 195
diff changeset
2 local vcard = require "util.vcard";
195
dc61684e8dbf plugins.vcard: Get and set vcard-temp info.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
3
dc61684e8dbf plugins.vcard: Get and set vcard-temp info.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
4 function verse.plugins.vcard(stream)
dc61684e8dbf plugins.vcard: Get and set vcard-temp info.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
5 function stream:get_vcard(jid, callback) --jid = nil for self
dc61684e8dbf plugins.vcard: Get and set vcard-temp info.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
6 stream:send_iq(verse.iq({to = jid, type="get"})
228
c5a4f82e2fd6 plugins.vcard: Use util.vcard
Kim Alvefur <zash@zash.se>
parents: 195
diff changeset
7 :tag("vCard", {xmlns=xmlns_vcard}), callback and function(stanza)
c5a4f82e2fd6 plugins.vcard: Use util.vcard
Kim Alvefur <zash@zash.se>
parents: 195
diff changeset
8 local lCard, xCard;
c5a4f82e2fd6 plugins.vcard: Use util.vcard
Kim Alvefur <zash@zash.se>
parents: 195
diff changeset
9 xCard = stanza:get_child("vCard", xmlns_vcard);
c5a4f82e2fd6 plugins.vcard: Use util.vcard
Kim Alvefur <zash@zash.se>
parents: 195
diff changeset
10 if stanza.attr.type == "result" and xCard then
c5a4f82e2fd6 plugins.vcard: Use util.vcard
Kim Alvefur <zash@zash.se>
parents: 195
diff changeset
11 lCard = vcard.xep54_to_lua(xCard)
c5a4f82e2fd6 plugins.vcard: Use util.vcard
Kim Alvefur <zash@zash.se>
parents: 195
diff changeset
12 vCard = vcard.xep54_to_text(xCard)
c5a4f82e2fd6 plugins.vcard: Use util.vcard
Kim Alvefur <zash@zash.se>
parents: 195
diff changeset
13 -- FIXME This is only until util.vcard.lua_to_text() is implemented
c5a4f82e2fd6 plugins.vcard: Use util.vcard
Kim Alvefur <zash@zash.se>
parents: 195
diff changeset
14 lCard._text = vCard;
c5a4f82e2fd6 plugins.vcard: Use util.vcard
Kim Alvefur <zash@zash.se>
parents: 195
diff changeset
15 callback(lCard)
c5a4f82e2fd6 plugins.vcard: Use util.vcard
Kim Alvefur <zash@zash.se>
parents: 195
diff changeset
16 else
c5a4f82e2fd6 plugins.vcard: Use util.vcard
Kim Alvefur <zash@zash.se>
parents: 195
diff changeset
17 callback(false) -- FIXME add error
c5a4f82e2fd6 plugins.vcard: Use util.vcard
Kim Alvefur <zash@zash.se>
parents: 195
diff changeset
18 end
c5a4f82e2fd6 plugins.vcard: Use util.vcard
Kim Alvefur <zash@zash.se>
parents: 195
diff changeset
19 end or nil);
c5a4f82e2fd6 plugins.vcard: Use util.vcard
Kim Alvefur <zash@zash.se>
parents: 195
diff changeset
20 end
195
dc61684e8dbf plugins.vcard: Get and set vcard-temp info.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
21
228
c5a4f82e2fd6 plugins.vcard: Use util.vcard
Kim Alvefur <zash@zash.se>
parents: 195
diff changeset
22 function stream:set_vcard(aCard, callback)
c5a4f82e2fd6 plugins.vcard: Use util.vcard
Kim Alvefur <zash@zash.se>
parents: 195
diff changeset
23 local xCard;
c5a4f82e2fd6 plugins.vcard: Use util.vcard
Kim Alvefur <zash@zash.se>
parents: 195
diff changeset
24 if type(aCard) == "table" and aCard.name then
c5a4f82e2fd6 plugins.vcard: Use util.vcard
Kim Alvefur <zash@zash.se>
parents: 195
diff changeset
25 xCard = aCard;
c5a4f82e2fd6 plugins.vcard: Use util.vcard
Kim Alvefur <zash@zash.se>
parents: 195
diff changeset
26 elseif type(aCard) == "string" then
c5a4f82e2fd6 plugins.vcard: Use util.vcard
Kim Alvefur <zash@zash.se>
parents: 195
diff changeset
27 xCard = vcard.text_to_xep54(aCard)[1];
c5a4f82e2fd6 plugins.vcard: Use util.vcard
Kim Alvefur <zash@zash.se>
parents: 195
diff changeset
28 elseif type(aCard) == "table" then
c5a4f82e2fd6 plugins.vcard: Use util.vcard
Kim Alvefur <zash@zash.se>
parents: 195
diff changeset
29 error("Converting a table to vCard not implemented")
c5a4f82e2fd6 plugins.vcard: Use util.vcard
Kim Alvefur <zash@zash.se>
parents: 195
diff changeset
30 end
c5a4f82e2fd6 plugins.vcard: Use util.vcard
Kim Alvefur <zash@zash.se>
parents: 195
diff changeset
31 if not xCard then return false end
c5a4f82e2fd6 plugins.vcard: Use util.vcard
Kim Alvefur <zash@zash.se>
parents: 195
diff changeset
32 stream:debug("setting vcard to %s", tostring(xCard));
195
dc61684e8dbf plugins.vcard: Get and set vcard-temp info.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
33 stream:send_iq(verse.iq({type="set"})
228
c5a4f82e2fd6 plugins.vcard: Use util.vcard
Kim Alvefur <zash@zash.se>
parents: 195
diff changeset
34 :add_child(xCard), callback);
195
dc61684e8dbf plugins.vcard: Get and set vcard-temp info.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
35 end
dc61684e8dbf plugins.vcard: Get and set vcard-temp info.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
36 end

mercurial