Mercurial > prosody-hg
comparison plugins/mod_vcard.lua @ 5500:eeea0eb2602a
mod_auth_internal_hashed, mod_auth_internal_plain, mod_privacy, mod_private, mod_register, mod_vcard, mod_muc: Use module:open_store()
| author | Kim Alvefur <zash@zash.se> |
|---|---|
| date | Fri, 19 Apr 2013 16:14:06 +0200 |
| parents | a6bae9d72c8f |
| children | bd0ff8ae98a8 |
comparison
equal
deleted
inserted
replaced
| 5498:2a67235e1d4d | 5500:eeea0eb2602a |
|---|---|
| 6 -- COPYING file in the source package for more information. | 6 -- COPYING file in the source package for more information. |
| 7 -- | 7 -- |
| 8 | 8 |
| 9 local st = require "util.stanza" | 9 local st = require "util.stanza" |
| 10 local jid_split = require "util.jid".split; | 10 local jid_split = require "util.jid".split; |
| 11 local datamanager = require "util.datamanager" | 11 |
| 12 local vcards = module:open_store(); | |
| 12 | 13 |
| 13 module:add_feature("vcard-temp"); | 14 module:add_feature("vcard-temp"); |
| 14 | 15 |
| 15 local function handle_vcard(event) | 16 local function handle_vcard(event) |
| 16 local session, stanza = event.origin, event.stanza; | 17 local session, stanza = event.origin, event.stanza; |
| 17 local to = stanza.attr.to; | 18 local to = stanza.attr.to; |
| 18 if stanza.attr.type == "get" then | 19 if stanza.attr.type == "get" then |
| 19 local vCard; | 20 local vCard; |
| 20 if to then | 21 if to then |
| 21 local node, host = jid_split(to); | 22 local node, host = jid_split(to); |
| 22 vCard = st.deserialize(datamanager.load(node, host, "vcard")); -- load vCard for user or server | 23 vCard = st.deserialize(vcards:get(node)); -- load vCard for user or server |
| 23 else | 24 else |
| 24 vCard = st.deserialize(datamanager.load(session.username, session.host, "vcard"));-- load user's own vCard | 25 vCard = st.deserialize(vcards:get(session.username));-- load user's own vCard |
| 25 end | 26 end |
| 26 if vCard then | 27 if vCard then |
| 27 session.send(st.reply(stanza):add_child(vCard)); -- send vCard! | 28 session.send(st.reply(stanza):add_child(vCard)); -- send vCard! |
| 28 else | 29 else |
| 29 session.send(st.error_reply(stanza, "cancel", "item-not-found")); | 30 session.send(st.error_reply(stanza, "cancel", "item-not-found")); |
| 30 end | 31 end |
| 31 else | 32 else |
| 32 if not to then | 33 if not to then |
| 33 if datamanager.store(session.username, session.host, "vcard", st.preserialize(stanza.tags[1])) then | 34 if vcards:set(session.username, st.preserialize(stanza.tags[1])) then |
| 34 session.send(st.reply(stanza)); | 35 session.send(st.reply(stanza)); |
| 35 else | 36 else |
| 36 -- TODO unable to write file, file may be locked, etc, what's the correct error? | 37 -- TODO unable to write file, file may be locked, etc, what's the correct error? |
| 37 session.send(st.error_reply(stanza, "wait", "internal-server-error")); | 38 session.send(st.error_reply(stanza, "wait", "internal-server-error")); |
| 38 end | 39 end |
