Class: Responsys::Member

Inherits:
Object
  • Object
show all
Includes:
Api, Api::Object
Defined in:
lib/responsys/member.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(email, riid = nil) ⇒ Member



10
11
12
13
14
# File 'lib/responsys/member.rb', line 10

def initialize(email, riid = nil)
  @email = email
  @user_riid = riid
  @client = Client.instance
end

Instance Attribute Details

#emailObject

Returns the value of attribute email.



8
9
10
# File 'lib/responsys/member.rb', line 8

def email
  @email
end

#user_riidObject

Returns the value of attribute user_riid.



8
9
10
# File 'lib/responsys/member.rb', line 8

def user_riid
  @user_riid
end

Instance Method Details

#add_to_list(list, subscribe = false) ⇒ Object



16
17
18
19
20
21
# File 'lib/responsys/member.rb', line 16

def add_to_list(list, subscribe = false)
  data = { EMAIL_ADDRESS_:  @email, EMAIL_PERMISSION_STATUS_: subscribe ? "I" : "O" }
  record = RecordData.new([data])

  @client.merge_list_members_riid(list, record, ListMergeRule.new(insertOnNoMatch: true, updateOnMatch: "NO_UPDATE"))
end

#present_in_list?(list) ⇒ Boolean



53
54
55
56
57
58
59
60
61
# File 'lib/responsys/member.rb', line 53

def present_in_list?(list)
  if !@user_riid.nil?
    response = lookup_list_via_key(list, "RIID", @user_riid)
  else
    response = lookup_list_via_key(list, "EMAIL_ADDRESS", @email)
  end

  !(response[:status] == "failure" && response[:error][:code] == "RECORD_NOT_FOUND")
end

#present_in_profile?(list) ⇒ Boolean



45
46
47
48
49
50
51
# File 'lib/responsys/member.rb', line 45

def present_in_profile?(list)
  return Responsys::Helper.format_response_with_message("member.riid_missing") if @user_riid.nil?

  response = lookup_profile_via_key(list, "RIID", @user_riid)

  !(response[:status] == "failure" && response[:error][:code] == "RECORD_NOT_FOUND")
end

#retrieve_profile_extension(profile_extension, fields) ⇒ Object



23
24
25
26
27
28
# File 'lib/responsys/member.rb', line 23

def retrieve_profile_extension(profile_extension, fields)
  return Responsys::Helper.format_response_with_message("member.riid_missing") if @user_riid.nil?
  return Responsys::Helper.format_response_with_message("member.record_not_found") unless present_in_profile?(profile_extension)

  @client.retrieve_profile_extension_records(profile_extension, QueryColumn.new("RIID"), fields, [@user_riid])
end

#subscribe(list) ⇒ Object



30
31
32
# File 'lib/responsys/member.rb', line 30

def subscribe(list)
  update(list, [{ EMAIL_ADDRESS_: @email, EMAIL_PERMISSION_STATUS_: "I" }])
end

#subscribed?(list) ⇒ Boolean



63
64
65
66
67
68
# File 'lib/responsys/member.rb', line 63

def subscribed?(list)
  return Responsys::Helper.format_response_with_message("member.record_not_found") unless present_in_list?(list)

  response = @client.retrieve_list_members(list, QueryColumn.new("EMAIL_ADDRESS"), %w(EMAIL_PERMISSION_STATUS_), [@email])
  response[:data][0][:EMAIL_PERMISSION_STATUS_] == "I"
end

#unsubscribe(list) ⇒ Object



34
35
36
# File 'lib/responsys/member.rb', line 34

def unsubscribe(list)
  update(list, [{ EMAIL_ADDRESS_: @email, EMAIL_PERMISSION_STATUS_: "O" }])
end

#update(list, data) ⇒ Object



38
39
40
41
42
43
# File 'lib/responsys/member.rb', line 38

def update(list, data)
  return Responsys::Helper.format_response_with_message("member.record_not_found") unless present_in_list?(list)

  record = RecordData.new(data)
  @client.merge_list_members(list, record)
end