Class: Responsys::Member
- Inherits:
-
Object
- Object
- Responsys::Member
- Includes:
- Api, Api::Object
- Defined in:
- lib/responsys/member.rb
Instance Attribute Summary collapse
-
#client ⇒ Object
Returns the value of attribute client.
-
#email ⇒ Object
Returns the value of attribute email.
-
#user_riid ⇒ Object
Returns the value of attribute user_riid.
Instance Method Summary collapse
- #add_to_list(list, subscribe = false, details = {}, update_record = false) ⇒ Object
-
#initialize(email, riid = nil) ⇒ Member
constructor
A new instance of Member.
- #present_in_list?(list, raising = false) ⇒ Boolean
- #present_in_profile?(list, raising = false) ⇒ Boolean
- #retrieve_profile_extension(profile_extension, fields) ⇒ Object
- #subscribe(list) ⇒ Object
- #subscribed?(list, raising = false) ⇒ Boolean
- #unsubscribe(list) ⇒ Object
- #update(list, data) ⇒ Object
Constructor Details
#initialize(email, riid = nil) ⇒ Member
Returns a new instance of Member.
10 11 12 13 |
# File 'lib/responsys/member.rb', line 10 def initialize(email, riid = nil) @email = email @user_riid = riid end |
Instance Attribute Details
#client ⇒ Object
Returns the value of attribute client.
8 9 10 |
# File 'lib/responsys/member.rb', line 8 def client @client end |
#email ⇒ Object
Returns the value of attribute email.
8 9 10 |
# File 'lib/responsys/member.rb', line 8 def email @email end |
#user_riid ⇒ Object
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, details = {}, update_record = false) ⇒ Object
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
# File 'lib/responsys/member.rb', line 15 def add_to_list(list, subscribe = false, details = {}, update_record = false) data = { EMAIL_ADDRESS_: @email, EMAIL_PERMISSION_STATUS_: subscribe ? "I" : "O" } safe_details = {} details.each do |k,v| next if reserved_fields.include? r_key(k) if [Time, Date, DateTime].include?(v.class) safe_details[r_key(k)] = details[k].strftime('%Y-%m-%dT%H:%M:%S%z') else safe_details[r_key(k)] = details[k] end end data = data.merge( safe_details ) record = RecordData.new([data]) Client.new.run do |client| client.merge_list_members_riid(list, record, ListMergeRule.new(insertOnNoMatch: true, updateOnMatch: (update_record ? 'REPLACE_ALL' : 'NO_UPDATE'))) end end |
#present_in_list?(list, raising = false) ⇒ Boolean
76 77 78 79 80 81 82 83 84 85 86 |
# File 'lib/responsys/member.rb', line 76 def present_in_list?(list, raising = false) Client.new.run(raising) do |client| 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 end |
#present_in_profile?(list, raising = false) ⇒ Boolean
66 67 68 69 70 71 72 73 74 |
# File 'lib/responsys/member.rb', line 66 def present_in_profile?(list, raising = false) Client.new.run(raising) do |client| return Responsys::Helper.("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 end |
#retrieve_profile_extension(profile_extension, fields) ⇒ Object
36 37 38 39 40 41 42 43 |
# File 'lib/responsys/member.rb', line 36 def retrieve_profile_extension(profile_extension, fields) Client.new.run do |client| return Responsys::Helper.("member.riid_missing") if @user_riid.nil? return Responsys::Helper.("member.record_not_found") unless present_in_profile?(profile_extension, true) client.retrieve_profile_extension_records(profile_extension, QueryColumn.new("RIID"), fields, [@user_riid]) end end |
#subscribe(list) ⇒ Object
45 46 47 48 49 |
# File 'lib/responsys/member.rb', line 45 def subscribe(list) Client.new.run do |client| update(list, [{ EMAIL_ADDRESS_: @email, EMAIL_PERMISSION_STATUS_: "I" }]) end end |
#subscribed?(list, raising = false) ⇒ Boolean
88 89 90 91 92 93 94 95 |
# File 'lib/responsys/member.rb', line 88 def subscribed?(list, raising = false) Client.new.run(raising) do |client| return Responsys::Helper.("member.record_not_found") unless present_in_list?(list, true) response = client.retrieve_list_members(list, QueryColumn.new("EMAIL_ADDRESS"), %w(EMAIL_PERMISSION_STATUS_), [@email]) response[:data][0][:EMAIL_PERMISSION_STATUS_] == "I" end end |
#unsubscribe(list) ⇒ Object
51 52 53 54 55 |
# File 'lib/responsys/member.rb', line 51 def unsubscribe(list) Client.new.run do |client| update(list, [{ EMAIL_ADDRESS_: @email, EMAIL_PERMISSION_STATUS_: "O" }]) end end |
#update(list, data) ⇒ Object
57 58 59 60 61 62 63 64 |
# File 'lib/responsys/member.rb', line 57 def update(list, data) Client.new.run(true) do |client| return Responsys::Helper.("member.record_not_found") unless present_in_list?(list, true) record = RecordData.new(data) client.merge_list_members(list, record) end end |