Class: Jabber::Vcard::Helper

Inherits:
Object
  • Object
show all
Defined in:
lib/xmpp4r/vcard/helper/vcard.rb

Overview

The Vcard helper retrieves vCards

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(stream) ⇒ Helper

Initialize a new Vcard helper



14
15
16
# File 'lib/xmpp4r/vcard/helper/vcard.rb', line 14

def initialize(stream)
  @stream = stream
end

Class Method Details

.get(stream, jid = nil) ⇒ Object

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



72
73
74
# File 'lib/xmpp4r/vcard/helper/vcard.rb', line 72

def self.get(stream, jid=nil)
  new(stream).get(jid)
end

.set(stream, iqvcard) ⇒ Object

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



79
80
81
# File 'lib/xmpp4r/vcard/helper/vcard.rb', line 79

def self.set(stream, iqvcard)
  new(stream).set(iqvcard)
end

Instance Method Details

#get(jid = nil) ⇒ Object

Retrieve vCard of an entity

Raises exception upon retrieval error, please catch that! (The exception is ServerError and is raisen by 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)



30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# 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) ⇒ Object

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


56
57
58
59
60
61
62
63
64
65
66
67
# 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