Class: CampaignMonitor::List

Inherits:
Object
  • Object
show all
Includes:
Helpers
Defined in:
lib/campaign_monitor/list.rb

Overview

Provides access to the subscribers and info about subscribers associated with a Mailing List

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Helpers

#formatted_timestamp, #handle_response, #timestamp_format

Constructor Details

#initialize(id = nil, name = nil) ⇒ List

Example

@list = new List(12345)


13
14
15
16
17
# File 'lib/campaign_monitor/list.rb', line 13

def initialize(id=nil, name=nil)
  @id = id
  @name = name
  @cm_client = CampaignMonitor.new
end

Instance Attribute Details

#cm_clientObject (readonly)

Returns the value of attribute cm_client.



9
10
11
# File 'lib/campaign_monitor/list.rb', line 9

def cm_client
  @cm_client
end

#idObject (readonly)

Returns the value of attribute id.



9
10
11
# File 'lib/campaign_monitor/list.rb', line 9

def id
  @id
end

#nameObject (readonly)

Returns the value of attribute name.



9
10
11
# File 'lib/campaign_monitor/list.rb', line 9

def name
  @name
end

Instance Method Details

#active_subscribers(date) ⇒ Object

Example

current_date = DateTime.new
@list = new List(12345)
@subscribers = @list.active_subscribers(current_date)

for subscriber in @subscribers
  puts subscriber.email
end


93
94
95
96
97
98
# File 'lib/campaign_monitor/list.rb', line 93

def active_subscribers(date)
  response = cm_client.Subscribers_GetActive('ListID' => self.id, 'Date' => formatted_timestamp(date))
  handle_response(response) do
    response['Subscriber'].collect{|s| Subscriber.new(s['EmailAddress'], s['Name'], s['Date'])}
  end
end

#add_and_resubscribe(email, name = nil, custom_fields = nil) ⇒ Object



34
35
36
37
38
39
40
# File 'lib/campaign_monitor/list.rb', line 34

def add_and_resubscribe(email, name=nil, custom_fields=nil)
  if custom_fields.nil?
    Result.new(cm_client.Subscriber_AddAndResubscribe("ListID" => self.id, "Email" => email, "Name" => name))        
  else
    add_and_resubscribe_with_custom_fields(email, name, custom_fields)
  end
end

#add_and_resubscribe_with_custom_fields(email, name, custom_fields) ⇒ Object

email The subscriber’s email address. name The subscriber’s name. custom_fields A hash of field name => value pairs.



72
73
74
75
76
77
78
79
80
81
82
83
# File 'lib/campaign_monitor/list.rb', line 72

def add_and_resubscribe_with_custom_fields(email, name, custom_fields)      
  response = cm_client.using_soap do |driver|
    driver.addAndResubscribeWithCustomFields \
        :ApiKey       => cm_client.api_key,
        :ListID       => self.id,
        :Email        => email,
        :Name         => name,
        :CustomFields => { :SubscriberCustomField => custom_fields_array(custom_fields) }
  end

  response.subscriber_AddAndResubscribeWithCustomFieldsResult
end

#add_subscriber(email, name = nil, custom_fields = nil) ⇒ Object

Example

@list = new List(12345)
result = @list.add_subscriber("[email protected]")

if result.succeeded?
  puts "Added Subscriber"
end


26
27
28
29
30
31
32
# File 'lib/campaign_monitor/list.rb', line 26

def add_subscriber(email, name=nil, custom_fields=nil)
  if custom_fields.nil?
    Result.new(cm_client.Subscriber_Add("ListID" => self.id, "Email" => email, "Name" => name))
  else
    add_subscriber_with_custom_fields(email, name, custom_fields)
  end
end

#add_subscriber_with_custom_fields(email, name, custom_fields) ⇒ Object

email The subscriber’s email address. name The subscriber’s name. custom_fields A hash of field name => value pairs.



56
57
58
59
60
61
62
63
64
65
66
67
# File 'lib/campaign_monitor/list.rb', line 56

def add_subscriber_with_custom_fields(email, name, custom_fields)
  response = cm_client.using_soap do |driver|
    driver.addSubscriberWithCustomFields \
        :ApiKey       => cm_client.api_key,
        :ListID       => self.id,
        :Email        => email,
        :Name         => name,
        :CustomFields => { :SubscriberCustomField => custom_fields_array(custom_fields) }
  end
  
  response.subscriber_AddWithCustomFieldsResult
end

#bounced(date) ⇒ Object

Example

current_date = DateTime.new
@list = new List(12345)
@subscribers = @list.bounced(current_date)

for subscriber in @subscribers
  puts subscriber.email
end


126
127
128
129
130
131
132
# File 'lib/campaign_monitor/list.rb', line 126

def bounced(date)
  response = cm_client.Subscribers_GetBounced('ListID' => self.id, 'Date' => formatted_timestamp(date))

  handle_response(response) do
    response["Subscriber"].collect{|s| Subscriber.new(s["EmailAddress"], s["Name"], s["Date"])}        
  end
end

#remove_subscriber(email) ⇒ Object

Example

@list = new List(12345)
result = @list.remove_subscriber("[email protected]")

if result.succeeded?
  puts "Deleted Subscriber"
end


49
50
51
# File 'lib/campaign_monitor/list.rb', line 49

def remove_subscriber(email)
  Result.new(cm_client.Subscriber_Unsubscribe("ListID" => self.id, "Email" => email))
end

#unsubscribed(date) ⇒ Object

Example

current_date = DateTime.new
@list = new List(12345)
@subscribers = @list.unsubscribed(current_date)

for subscriber in @subscribers
  puts subscriber.email
end


108
109
110
111
112
113
114
115
116
# File 'lib/campaign_monitor/list.rb', line 108

def unsubscribed(date)
  date = formatted_timestamp(date) unless date.is_a?(String)
  
  response = cm_client.Subscribers_GetUnsubscribed('ListID' => self.id, 'Date' => date)
  
  handle_response(response) do
    response['Subscriber'].collect{|s| Subscriber.new(s['EmailAddress'], s['Name'], s['Date'])}
  end
end