This repository has been archived by the owner on Aug 9, 2022. It is now read-only.
/
subscriber.rb
44 lines (38 loc) · 1.47 KB
/
subscriber.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
class CampaignMonitor
# Provides the ability to add/remove subscribers from a list
class Subscriber
include CampaignMonitor::Helpers
attr_accessor :email_address, :name, :date_subscribed
attr_reader :cm_client
def initialize(email_address, name=nil, date=nil)
@email_address = email_address
@name = name
@date_subscribed = date_subscribed
@cm_client = CampaignMonitor.new
end
# Example
# @subscriber = Subscriber.new("ralph.wiggum@simpsons.net")
# @subscriber.add(12345)
def add(list_id)
Result.new(cm_client.Subscriber_Add("ListID" => list_id, "Email" => @email_address, "Name" => @name))
end
# Example
# @subscriber = Subscriber.new("ralph.wiggum@simpsons.net")
# @subscriber.add_and_resubscribe(12345)
def add_and_resubscribe(list_id)
Result.new(cm_client.Subscriber_AddAndResubscribe("ListID" => list_id, "Email" => @email_address, "Name" => @name))
end
# Example
# @subscriber = Subscriber.new("ralph.wiggum@simpsons.net")
# @subscriber.unsubscribe(12345)
def unsubscribe(list_id)
Result.new(cm_client.Subscriber_Unsubscribe("ListID" => list_id, "Email" => @email_address))
end
def is_subscribed?(list_id)
result = cm_client.Subscribers_GetIsSubscribed("ListID" => list_id, "Email" => @email_address)
return true if result == 'True'
return false if result == 'False'
raise "Invalid value for is_subscribed?: #{result}"
end
end
end