Sha256: 8ebc516e5ddbfa4b2e01c52cd56fa64231e5dc6094ea5903560c6416b185c037
Contents?: true
Size: 1.39 KB
Versions: 27
Compression:
Stored size: 1.39 KB
Contents
# encoding: UTF-8 module Vines class Stanza class Iq class Vcard < Iq NS = NAMESPACES[:vcard] register "/iq[@id and @type='get' or @type='set']/ns:vCard", 'ns' => NS def process return unless allowed? if local? get? ? vcard_query : vcard_update else self['from'] = stream.user.jid.to_s route end end private def vcard_query to = validate_to jid = to ? to.bare : stream.user.jid.bare card = storage(jid.domain).find_vcard(jid) raise StanzaErrors::ItemNotFound.new(self, 'cancel') unless card doc = Document.new result = doc.create_element('iq') do |node| node['from'] = jid.to_s unless jid == stream.user.jid.bare node['id'] = self['id'] node['to'] = stream.user.jid.to_s node['type'] = 'result' node << card end stream.write(result) end def vcard_update to = validate_to unless to.nil? || to == stream.user.jid.bare raise StanzaErrors::Forbidden.new(self, 'auth') end storage.save_vcard(stream.user.jid, elements.first) result = to_result result.remove_attribute('from') stream.write(result) end end end end end
Version data entries
27 entries across 27 versions & 4 rubygems