class SendGrid::Personalization

Attributes

bccs[R]
ccs[R]
custom_args[R]
dynamic_template_data[R]
from[R]
headers[R]
send_at[RW]
subject[RW]
substitutions[R]
tos[R]

Public Class Methods

new() click to toggle source
# File lib/sendgrid/helpers/mail/personalization.rb, line 10
def initialize
  @tos = []
  @from = nil
  @ccs = []
  @bccs = []
  @subject = nil
  @headers = {}
  @substitutions = {}
  @custom_args = {}
  @dynamic_template_data = {}
  @send_at = nil
end

Public Instance Methods

add_bcc(bcc) click to toggle source
# File lib/sendgrid/helpers/mail/personalization.rb, line 39
def add_bcc(bcc)
  raise DuplicatePersonalizationError if duplicate?(bcc)

  @bccs << bcc.to_json
end
add_cc(cc) click to toggle source
# File lib/sendgrid/helpers/mail/personalization.rb, line 33
def add_cc(cc)
  raise DuplicatePersonalizationError if duplicate?(cc)

  @ccs << cc.to_json
end
add_custom_arg(custom_arg) click to toggle source
# File lib/sendgrid/helpers/mail/personalization.rb, line 55
def add_custom_arg(custom_arg)
  custom_arg = custom_arg.to_json
  @custom_args = @custom_args.merge(custom_arg['custom_arg'])
end
add_dynamic_template_data(dynamic_template_data) click to toggle source
# File lib/sendgrid/helpers/mail/personalization.rb, line 60
def add_dynamic_template_data(dynamic_template_data)
  @dynamic_template_data.merge!(dynamic_template_data)
end
add_from(from) click to toggle source
# File lib/sendgrid/helpers/mail/personalization.rb, line 29
def add_from(from)
  @from = from.to_json
end
add_header(header) click to toggle source
# File lib/sendgrid/helpers/mail/personalization.rb, line 45
def add_header(header)
  header = header.to_json
  @headers = @headers.merge(header['header'])
end
add_substitution(substitution) click to toggle source
# File lib/sendgrid/helpers/mail/personalization.rb, line 50
def add_substitution(substitution)
  substitution = substitution.to_json
  @substitutions = @substitutions.merge(substitution['substitution'])
end
add_to(to) click to toggle source
# File lib/sendgrid/helpers/mail/personalization.rb, line 23
def add_to(to)
  raise DuplicatePersonalizationError if duplicate?(to)

  @tos << to.to_json
end
to_json(*) click to toggle source
# File lib/sendgrid/helpers/mail/personalization.rb, line 64
def to_json(*)
  {
    'to' => tos,
    'from' => from,
    'cc' => ccs,
    'bcc' => bccs,
    'subject' => subject,
    'headers' => headers,
    'substitutions' => substitutions,
    'custom_args' => custom_args,
    'dynamic_template_data' => dynamic_template_data,
    'send_at' => send_at
  }.delete_if { |_, value| value.to_s.strip == '' || value == [] || value == {} }
end

Private Instance Methods

duplicate?(addition) click to toggle source
# File lib/sendgrid/helpers/mail/personalization.rb, line 81
def duplicate?(addition)
  additional_email = addition.email.downcase

  [@tos, @ccs, @bccs].flatten.each do |elm|
    return true if elm&.dig('email')&.downcase == additional_email
  end

  false
end