class Jabber::Vcard::Helper

The Vcard helper retrieves vCards

Public Class Methods

get(stream, jid=nil) click to toggle source

Quickly initialize a Vcard helper and get a vCard. See Vcard#get

# File lib/xmpp4r/vcard/helper/vcard.rb, line 72
def self.get(stream, jid=nil)
  new(stream).get(jid)
end
new(stream) click to toggle source

Initialize a new Vcard helper

# File lib/xmpp4r/vcard/helper/vcard.rb, line 14
def initialize(stream)
  @stream = stream
end
set(stream, iqvcard) click to toggle source

Quickly initialize a Vcard helper and set your vCard. See Vcard#set

# File lib/xmpp4r/vcard/helper/vcard.rb, line 79
def self.set(stream, iqvcard)
  new(stream).set(iqvcard)
end

Public Instance Methods

get(jid=nil) click to toggle source

Retrieve vCard of an entity

Raises exception upon retrieval error, please catch that! (The exception is ServerError and is raisen by Jabber::Stream#send_with_id.

Usage of Threads is suggested here as vCards can be very big (see /iq/vCard/PHOTO/BINVAL).

jid
Jabber::JID

or nil (should be stripped, nil for the client's own vCard)

result
Jabber::IqVcard

or nil (nil results may be handled as empty vCards)

# File lib/xmpp4r/vcard/helper/vcard.rb, line 30
def get(jid=nil)
  res = nil
  request = Iq.new(:get, jid)
  request.from = @stream.jid  # Enable components to use this
  request.add(IqVcard.new)
  @stream.send_with_id(request) { |answer|
    # No check for sender or queryns needed (see send_with_id)
    if answer.type == :result
      res = answer.vcard
      true
    else
      false
    end
  }
  res
end
set(iqvcard) click to toggle source

Set your own vCard (Clients only)

Raises exception when setting fails

Usage of Threads suggested here, too. The function waits for approval from the server.

iqvcard
Jabber::IqVcard
# File lib/xmpp4r/vcard/helper/vcard.rb, line 56
def set(iqvcard)
  iq = Iq.new(:set)
  iq.add(iqvcard)

  @stream.send_with_id(iq) { |answer|
    if answer.type == :result
      true
    else
      false
    end
  }
end