Class: Whatsapp::Messages::Template::Parameter

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

Overview

Parameters for template components

Defined Under Namespace

Modules: Types

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(type:, text: nil, currency: nil, date_time: nil, image: nil, document: nil, video: nil, location: nil, payload: nil) ⇒ Parameter

Returns a new instance of Parameter.

Parameters:

  • type (String)

    The parameter type (one of Types: text, currency, date_time, image, document, video, location, payload).

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

    The text value for text parameters.

  • currency (Hash, nil) (defaults to: nil)

    Currency details for currency parameters.

  • date_time (Hash, nil) (defaults to: nil)

    Date/time details for date_time parameters.

  • image (Hash, nil) (defaults to: nil)

    Image details for image parameters.

  • document (Hash, nil) (defaults to: nil)

    Document details for document parameters.

  • video (Hash, nil) (defaults to: nil)

    Video details for video parameters.

  • location (Hash, nil) (defaults to: nil)

    Location details for location parameters.

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

    Payload for button parameters.



69
70
71
72
73
74
75
76
77
78
79
80
81
82
# File 'lib/ruby/whatsapp/messages/template/parameter.rb', line 69

def initialize(type:, text: nil, currency: nil, date_time: nil, image: nil, document: nil, video: nil,
  location: nil, payload: nil)
  @type = type
  @text = text
  @currency = currency
  @date_time = date_time
  @image = image
  @document = document
  @video = video
  @location = location
  @payload = payload

  validate!
end

Instance Attribute Details

#currencyHash?

Returns:

  • (Hash, nil)


31
32
33
# File 'lib/ruby/whatsapp/messages/template/parameter.rb', line 31

def currency
  @currency
end

#date_timeHash?

Returns:

  • (Hash, nil)


35
36
37
# File 'lib/ruby/whatsapp/messages/template/parameter.rb', line 35

def date_time
  @date_time
end

#documentHash?

Returns:

  • (Hash, nil)


43
44
45
# File 'lib/ruby/whatsapp/messages/template/parameter.rb', line 43

def document
  @document
end

#imageHash?

Returns:

  • (Hash, nil)


39
40
41
# File 'lib/ruby/whatsapp/messages/template/parameter.rb', line 39

def image
  @image
end

#locationHash?

Returns:

  • (Hash, nil)


51
52
53
# File 'lib/ruby/whatsapp/messages/template/parameter.rb', line 51

def location
  @location
end

#payloadString?

Returns:

  • (String, nil)


55
56
57
# File 'lib/ruby/whatsapp/messages/template/parameter.rb', line 55

def payload
  @payload
end

#textString?

Returns:

  • (String, nil)


27
28
29
# File 'lib/ruby/whatsapp/messages/template/parameter.rb', line 27

def text
  @text
end

#typeString

Returns:

  • (String)


23
24
25
# File 'lib/ruby/whatsapp/messages/template/parameter.rb', line 23

def type
  @type
end

#videoHash?

Returns:

  • (Hash, nil)


47
48
49
# File 'lib/ruby/whatsapp/messages/template/parameter.rb', line 47

def video
  @video
end

Instance Method Details

#serializeHash

Serializes the parameter to a hash format suitable for the WhatsApp API.

Returns:

  • (Hash)

    The serialized parameter.



86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
# File 'lib/ruby/whatsapp/messages/template/parameter.rb', line 86

def serialize
  result = { type: }

  case type
  when Types::TEXT
    result[:text] = text
  when Types::CURRENCY
    result[:currency] = currency
  when Types::DATE_TIME
    result[:date_time] = date_time
  when Types::IMAGE
    result[:image] = image
  when Types::DOCUMENT
    result[:document] = document
  when Types::VIDEO
    result[:video] = video
  when Types::LOCATION
    result[:location] = location
  when Types::PAYLOAD
    result[:payload] = payload
  end

  result.compact
end