Class: Whatsapp::Messages::Contacts::Contact

Inherits:
Object
  • Object
show all
Includes:
ActiveModel::Validations
Defined in:
lib/ruby/whatsapp/messages/contacts/contact.rb

Overview

Represents a single contact entry within a contacts message.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(name:, phones: [], emails: [], addresses: [], org: nil, urls: [], birthday: nil) ⇒ Contact

Returns a new instance of Contact.

Parameters:

  • name (Hash, Name)

    The contact's name. formatted_name is required.

  • phones (Array<Hash, Phone>) (defaults to: [])

    Phone numbers.

  • emails (Array<Hash, Email>) (defaults to: [])

    Email addresses.

  • addresses (Array<Hash, Address>) (defaults to: [])

    Physical addresses.

  • org (Hash, Org, nil) (defaults to: nil)

    Organization details.

  • urls (Array<Hash, Url>) (defaults to: [])

    URLs.

  • birthday (String, nil) (defaults to: nil)

    Birthday in YYYY-MM-DD format. @raise [ActiveModel::ValidationError] if validation fails.



48
49
50
51
52
53
54
55
56
57
58
59
60
# File 'lib/ruby/whatsapp/messages/contacts/contact.rb', line 48

def initialize(name:, phones: [], emails: [], addresses: [], org: nil, urls: [], birthday: nil)
  @name = name.is_a?(Name) ? name : Name.new(**name)
  @phones = phones.map { |p| p.is_a?(Phone) ? p : Phone.new(**p) }
  @emails = emails.map { |e| e.is_a?(Email) ? e : Email.new(**e) }
  @addresses = addresses.map { |a| a.is_a?(Address) ? a : Address.new(**a) }
  @org = if org
           org.is_a?(Org) ? org : Org.new(**org)
         end
  @urls = urls.map { |u| u.is_a?(Url) ? u : Url.new(**u) }
  @birthday = birthday

  validate!
end

Instance Attribute Details

#addressesArray<Address>

Returns:



24
25
26
# File 'lib/ruby/whatsapp/messages/contacts/contact.rb', line 24

def addresses
  @addresses
end

#birthdayString?

Returns Date in YYYY-MM-DD format.

Returns:

  • (String, nil)

    Date in YYYY-MM-DD format.



36
37
38
# File 'lib/ruby/whatsapp/messages/contacts/contact.rb', line 36

def birthday
  @birthday
end

#emailsArray<Email>

Returns:



20
21
22
# File 'lib/ruby/whatsapp/messages/contacts/contact.rb', line 20

def emails
  @emails
end

#nameName

Returns:



12
13
14
# File 'lib/ruby/whatsapp/messages/contacts/contact.rb', line 12

def name
  @name
end

#orgOrg?

Returns:



28
29
30
# File 'lib/ruby/whatsapp/messages/contacts/contact.rb', line 28

def org
  @org
end

#phonesArray<Phone>

Returns:



16
17
18
# File 'lib/ruby/whatsapp/messages/contacts/contact.rb', line 16

def phones
  @phones
end

#urlsArray<Url>

Returns:



32
33
34
# File 'lib/ruby/whatsapp/messages/contacts/contact.rb', line 32

def urls
  @urls
end

Instance Method Details

#serializeHash

Returns The serialized contact payload.

Returns:

  • (Hash)

    The serialized contact payload.



63
64
65
66
67
68
69
70
71
72
73
74
# File 'lib/ruby/whatsapp/messages/contacts/contact.rb', line 63

def serialize
  payload = { name: name.serialize }

  payload[:phones] = phones.map(&:serialize) if phones.any?
  payload[:emails] = emails.map(&:serialize) if emails.any?
  payload[:addresses] = addresses.map(&:serialize) if addresses.any?
  payload[:org] = org.serialize if org
  payload[:urls] = urls.map(&:serialize) if urls.any?
  payload[:birthday] = birthday if birthday

  payload
end