campaigning 0.15.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.bnsignore +16 -0
- data/.gitignore +5 -0
- data/LICENSE +20 -0
- data/README.rdoc +65 -0
- data/Rakefile +59 -0
- data/VERSION.yml +4 -0
- data/campaigning.gemspec +77 -0
- data/lib/campaigning.rb +1 -0
- data/lib/campaigning/campaign.rb +218 -0
- data/lib/campaigning/campaigning.rb +53 -0
- data/lib/campaigning/client.rb +335 -0
- data/lib/campaigning/list.rb +276 -0
- data/lib/campaigning/module_mixin.rb +31 -0
- data/lib/campaigning/soap/generated/default.rb +1715 -0
- data/lib/campaigning/soap/generated/defaultDriver.rb +413 -0
- data/lib/campaigning/soap/generated/defaultMappingRegistry.rb +1526 -0
- data/lib/campaigning/subscriber.rb +158 -0
- data/lib/campaigning/template.rb +124 -0
- data/sample/campaign_sample.rb +116 -0
- data/sample/campaigning_sample.rb +25 -0
- data/sample/client_sample.rb +139 -0
- data/sample/list_sample.rb +159 -0
- data/sample/subscriber_sample.rb +88 -0
- data/test/campaign_test.rb +102 -0
- data/test/campaigning_test.rb +34 -0
- data/test/client_test.rb +130 -0
- data/test/list_test.rb +113 -0
- data/test/subscriber_test.rb +55 -0
- data/test/template_test.rb +62 -0
- data/test/test_helper.rb +10 -0
- metadata +100 -0
@@ -0,0 +1,158 @@
|
|
1
|
+
# Subscriber is defined in default.rb which is automatically generated.
|
2
|
+
# In this file we add additional methods to the Subscriber class.
|
3
|
+
require File.expand_path(File.dirname(__FILE__)) + '/module_mixin'
|
4
|
+
|
5
|
+
module Campaigning
|
6
|
+
class Subscriber
|
7
|
+
include ModuleMixin
|
8
|
+
attr_accessor :emailAddress
|
9
|
+
attr_accessor :name
|
10
|
+
attr_accessor :date
|
11
|
+
attr_accessor :state
|
12
|
+
attr_accessor :customFields
|
13
|
+
|
14
|
+
def initialize(emailAddress = nil, name = nil, date = nil, state = nil, customFields = nil, opts={})
|
15
|
+
@apiKey = opts[:apiKey] || CAMPAIGN_MONITOR_API_KEY
|
16
|
+
@emailAddress = emailAddress
|
17
|
+
@name = name
|
18
|
+
@date = date
|
19
|
+
@state = state
|
20
|
+
@customFields = customFields
|
21
|
+
end
|
22
|
+
|
23
|
+
|
24
|
+
#Adds a subscriber to a subscriber list, including adding custom field data for the subscriber. If the subscriber
|
25
|
+
#(email address) already exists, the name value is updated with whatever is passed in.
|
26
|
+
#
|
27
|
+
#If the list has been set as double opt-in, they will be sent the verification email, otherwise they will be sent the
|
28
|
+
#confirmation email you have set up for the list being subscribed to.
|
29
|
+
#
|
30
|
+
#<b>Please note</b>: If the subscriber is in an inactive state or has previously been unsubscribed, they will *not* be re-added
|
31
|
+
#to the active list. Therefore, this method should be used with caution and only where suitable.
|
32
|
+
#
|
33
|
+
#*Return*:
|
34
|
+
#
|
35
|
+
#*Success*: Upon a successful call, this method will return a Campaigning::Result object wich consists of a +code+ and +message+ fields
|
36
|
+
#containing a successful message.
|
37
|
+
#
|
38
|
+
#*Error*: An Exception containing the cause of the error will be raised.
|
39
|
+
def add!(list_id, custom_fields={})
|
40
|
+
params = {
|
41
|
+
:apiKey => @apiKey,
|
42
|
+
:listID => list_id,
|
43
|
+
:email => @emailAddress,
|
44
|
+
:name => @name
|
45
|
+
}
|
46
|
+
if custom_fields.empty?
|
47
|
+
response = @@soap.addSubscriber(params)
|
48
|
+
handle_response response.subscriber_AddResult
|
49
|
+
else
|
50
|
+
params.merge!({:customFields => custom_fields_array(custom_fields)})
|
51
|
+
response = @@soap.addSubscriberWithCustomFields(params)
|
52
|
+
handle_response response.subscriber_AddWithCustomFieldsResult
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
|
57
|
+
#Adds a subscriber to a subscriber list, including adding custom field data for the subscriber. If the subscriber (email address) already exists,
|
58
|
+
#the name value is updated with whatever is passed in.
|
59
|
+
#
|
60
|
+
#If the list has been set as double opt-in, they will be sent the verification email, otherwise they will be sent the
|
61
|
+
#confirmation email you have set up for the list being subscribed to.
|
62
|
+
#
|
63
|
+
#<b>Please note</b>: If the subscriber is in an inactive state or has previously been unsubscribed, they will be re-added to
|
64
|
+
#the active list. Therefore, this method should be used with caution and only where suitable.
|
65
|
+
#
|
66
|
+
#*Return*:
|
67
|
+
#
|
68
|
+
#*Success*: Upon a successful call, this method will return a Campaigning::Result object wich consists of a +code+ and +message+ fields
|
69
|
+
#containing a successful message.
|
70
|
+
#
|
71
|
+
#*Error*: An Exception containing the cause of the error will be raised.
|
72
|
+
def add_and_resubscribe!(list_id, custom_fields={})
|
73
|
+
params = {
|
74
|
+
:apiKey => @apiKey,
|
75
|
+
:listID => list_id,
|
76
|
+
:email => @emailAddress,
|
77
|
+
:name => @name
|
78
|
+
}
|
79
|
+
if custom_fields.empty?
|
80
|
+
response = @@soap.addAndResubscribe(params)
|
81
|
+
handle_response response.subscriber_AddAndResubscribeResult
|
82
|
+
else
|
83
|
+
params.merge!({:customFields => custom_fields_array(custom_fields)})
|
84
|
+
response = @@soap.addAndResubscribeWithCustomFields(params)
|
85
|
+
handle_response response.subscriber_AddAndResubscribeWithCustomFieldsResult
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
89
|
+
|
90
|
+
#Changes the status of an Active Subscriber to an Unsubscribed Subscriber who will no longer receive
|
91
|
+
#campaigns sent to that Subscriber List.
|
92
|
+
#
|
93
|
+
#If the list is set to add unsubscribing subscribers to the suppression list, then the subscriber’s email address will
|
94
|
+
#also be added to the suppression list.
|
95
|
+
#
|
96
|
+
#*Return*:
|
97
|
+
#
|
98
|
+
#*Success*: Upon a successful call, this method will return a Campaigning::Result object wich consists of a +code+ and +message+ fields
|
99
|
+
#containing a successful message.
|
100
|
+
#
|
101
|
+
#*Error*: An Exception containing the cause of the error will be raised.
|
102
|
+
def unsubscribe!(list_id)
|
103
|
+
Subscriber.unsubscribe!(@emailAddress, list_id, :apiKey=> @apiKey)
|
104
|
+
end
|
105
|
+
|
106
|
+
|
107
|
+
#Changes the status of an Active Subscriber to an Unsubscribed Subscriber who will no longer receive
|
108
|
+
#campaigns sent to that Subscriber List (Same that the instance method with the same name).
|
109
|
+
#
|
110
|
+
#Aviable _opts_ arguments are:
|
111
|
+
# * :apiKey - optional API key to use to make request. Will use CAMPAIGN_MONITOR_API_KEY if not set.
|
112
|
+
def self.unsubscribe!(email, list_id, opts={})
|
113
|
+
response = @@soap.unsubscribe(
|
114
|
+
:apiKey => opts[:apiKey] || CAMPAIGN_MONITOR_API_KEY,
|
115
|
+
:listID => list_id,
|
116
|
+
:email => email
|
117
|
+
)
|
118
|
+
handle_response response.subscriber_UnsubscribeResult
|
119
|
+
end
|
120
|
+
|
121
|
+
#Returns True or False as to the existence of the given email address in the list supplied.
|
122
|
+
def is_subscribed?(list_id)
|
123
|
+
Subscriber.is_subscribed?(@emailAddress, list_id, :apiKey=> @apiKey)
|
124
|
+
end
|
125
|
+
|
126
|
+
#Returns True or False as to the existence of the given email address in the list supplied.
|
127
|
+
#
|
128
|
+
#Aviable _opts_ arguments are:
|
129
|
+
# * :apiKey - optional API key to use to make request. Will use CAMPAIGN_MONITOR_API_KEY if not set.
|
130
|
+
def self.is_subscribed?(email, list_id, opts={})
|
131
|
+
response = @@soap.getIsSubscribed(
|
132
|
+
:apiKey => opts[:apiKey] || CAMPAIGN_MONITOR_API_KEY,
|
133
|
+
:listID => list_id,
|
134
|
+
:email => email
|
135
|
+
)
|
136
|
+
response = handle_response response.subscribers_GetIsSubscribedResult
|
137
|
+
response == 'True' ? true : false
|
138
|
+
end
|
139
|
+
|
140
|
+
|
141
|
+
protected
|
142
|
+
|
143
|
+
def custom_fields_array(custom_fields) #:nodoc:
|
144
|
+
arr = []
|
145
|
+
custom_fields.each do |key, value|
|
146
|
+
if value.is_a? Array
|
147
|
+
value.each do |v|
|
148
|
+
arr << {:key => key, :value => v}
|
149
|
+
end
|
150
|
+
else
|
151
|
+
arr << { :key => key, :value => value }
|
152
|
+
end
|
153
|
+
end
|
154
|
+
arr
|
155
|
+
end
|
156
|
+
|
157
|
+
end
|
158
|
+
end
|
@@ -0,0 +1,124 @@
|
|
1
|
+
# Template is defined in soap/default.rb which is automatically generated.
|
2
|
+
# In this file we add additional methods to the Template class.
|
3
|
+
require File.expand_path(File.dirname(__FILE__)) + '/module_mixin'
|
4
|
+
|
5
|
+
|
6
|
+
module Campaigning
|
7
|
+
class Template
|
8
|
+
include ModuleMixin
|
9
|
+
attr_accessor :templateID
|
10
|
+
attr_accessor :name
|
11
|
+
attr_accessor :previewURL
|
12
|
+
attr_accessor :screenshotURL
|
13
|
+
|
14
|
+
def initialize(templateID = nil, name = nil, previewURL = nil, screenshotURL = nil, opts = {})
|
15
|
+
@apiKey = opts[:apiKey] || CAMPAIGN_MONITOR_API_KEY
|
16
|
+
@templateID = templateID
|
17
|
+
@name = name
|
18
|
+
@previewURL = previewURL
|
19
|
+
@screenshotURL = screenshotURL
|
20
|
+
end
|
21
|
+
|
22
|
+
#Creates a new template for a client.
|
23
|
+
#
|
24
|
+
#Available _params_ argument are:
|
25
|
+
# * :clientID - The ID of the client who will owner of the list.
|
26
|
+
# * :templateName - The name of the template. Maximum of 30 characters (will be truncated to 30 characters if longer).
|
27
|
+
# * :htmlPageURL - The URL of the HTML page you have created for the template.
|
28
|
+
# * :zipFileURL - Optional URL of a zip file containing any other files required by the template.
|
29
|
+
# * :screenshotURL - Optional URL of a screenshot of the template. Must be in jpeg format and at least 218 pixels wide.
|
30
|
+
# * :apiKey - optional API key to use to make request. Will use CAMPAIGN_MONITOR_API_KEY if not set.
|
31
|
+
#*Return*:
|
32
|
+
#
|
33
|
+
#*Success*: Upon a successful call, this method will return a Campaigning::Template object representing the newly created
|
34
|
+
#template. The object returned isn't filled with previewURL and screenShotURL once the CampaignMonitor API generate a new
|
35
|
+
#value for that and doesn't return it on te create! method. In order to get a complete filled object call the Template.details
|
36
|
+
#method.
|
37
|
+
#
|
38
|
+
#*Error*: An Exception containing the cause of the error will be raised.
|
39
|
+
def self.create!(params)
|
40
|
+
response = @@soap.createTemplate(
|
41
|
+
:apiKey => params[:apiKey] || CAMPAIGN_MONITOR_API_KEY,
|
42
|
+
:clientID => params[:clientID],
|
43
|
+
:templateName => params[:templateName],
|
44
|
+
:hTMLPageURL => params[:htmlPageURL],
|
45
|
+
:zipFileURL => params[:zipFileURL],
|
46
|
+
:screenshotURL => params[:screenshotURL]
|
47
|
+
)
|
48
|
+
Template.new( handle_response(response.template_CreateResult), params[:templateName], nil, nil, :apiKey=> params[:apiKey] )
|
49
|
+
end
|
50
|
+
|
51
|
+
#Gets the details of a template.
|
52
|
+
#
|
53
|
+
#*Return*:
|
54
|
+
#
|
55
|
+
#*Success*: Upon a successful call, this method will return a Template object, which consists of the template ID,
|
56
|
+
#the template name, a preview URL and a screenshot URL.
|
57
|
+
#
|
58
|
+
#*Error*: An Exception containing the cause of the error will be raised.
|
59
|
+
def details
|
60
|
+
response = @@soap.getTemplateDetail(:apiKey => @apiKey, :templateID => @templateID)
|
61
|
+
handle_response response.template_GetDetailResult
|
62
|
+
end
|
63
|
+
|
64
|
+
#Updates an existing template.
|
65
|
+
#
|
66
|
+
#Available _params_ argument are:
|
67
|
+
# * :templateID - The ID of the template to be updated.
|
68
|
+
# * :templateName - The name of the template. Maximum of 30 characters (will be truncated to 30 characters if longer).
|
69
|
+
# * :htmlPageURL - The URL of the HTML page you have created for the template.
|
70
|
+
# * :zipFileURL - Optional URL of a zip file containing any other files required by the template.
|
71
|
+
# * :screenshotURL - Optional URL of a screenshot of the template. Must be in jpeg format and at least 218 pixels wide.
|
72
|
+
# * :apiKey - optional API key to use to make request. Will use CAMPAIGN_MONITOR_API_KEY if not set.
|
73
|
+
#*Return*:
|
74
|
+
#
|
75
|
+
#*Success*: Upon a successful call, this method will return a Campaigning::Result object wich consists of a +code+ and +message+ fields
|
76
|
+
#containing a successful message.
|
77
|
+
#
|
78
|
+
#*Error*: An Exception containing the cause of the error will be raised.
|
79
|
+
def update!(params)
|
80
|
+
response = @@soap.updateTemplate(
|
81
|
+
:apiKey => params[:apiKey] || CAMPAIGN_MONITOR_API_KEY,
|
82
|
+
:templateID => @templateID,
|
83
|
+
:templateName => params[:templateName],
|
84
|
+
:hTMLPageURL => params[:htmlPageURL],
|
85
|
+
:zipFileURL => params[:zipFileURL],
|
86
|
+
:screenshotURL => params[:screenshotURL]
|
87
|
+
)
|
88
|
+
handle_response response.template_UpdateResult
|
89
|
+
end
|
90
|
+
|
91
|
+
|
92
|
+
#Deletes a template.
|
93
|
+
#
|
94
|
+
#*Return*:
|
95
|
+
#
|
96
|
+
#*Success*: Upon a successful call, this method will return a Campaigning::Result object wich consists of a +code+ and +message+ fields
|
97
|
+
#containing a successful message.
|
98
|
+
#
|
99
|
+
#*Error*: An Exception containing the cause of the error will be raised.
|
100
|
+
def delete!
|
101
|
+
response = Template.delete!(@templateID, :apiKey=> @apiKey)
|
102
|
+
self.templateID, self.name = nil, nil
|
103
|
+
response
|
104
|
+
end
|
105
|
+
|
106
|
+
|
107
|
+
#Deletes a template.
|
108
|
+
#
|
109
|
+
#Aviable _opts_ arguments are:
|
110
|
+
# * :apiKey - optional API key to use to make request. Will use CAMPAIGN_MONITOR_API_KEY if not set.
|
111
|
+
#
|
112
|
+
#*Return*:
|
113
|
+
#
|
114
|
+
#*Success*: Upon a successful call, this method will return a Campaigning::Result object wich consists of a +code+ and +message+ fields
|
115
|
+
#containing a successful message.
|
116
|
+
#
|
117
|
+
#*Error*: An Exception containing the cause of the error will be raised.
|
118
|
+
def self.delete!(template_id, opts={})
|
119
|
+
response = @@soap.deleteTemplate(:apiKey => opts[:apiKey] || CAMPAIGN_MONITOR_API_KEY, :templateID => template_id)
|
120
|
+
handle_response response.template_DeleteResult
|
121
|
+
end
|
122
|
+
|
123
|
+
end
|
124
|
+
end
|
@@ -0,0 +1,116 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'campaigning'
|
3
|
+
|
4
|
+
CAMPAIGN_MONITOR_API_KEY = '__PUT__YOUR__API__KEY__HERE__'
|
5
|
+
|
6
|
+
|
7
|
+
# SETUP FOR THIS SAMPLE ---------------------------------------------------------------------
|
8
|
+
#Creating a Client for this sample execution
|
9
|
+
client = Campaigning::Client.create!(
|
10
|
+
:companyName => "Client to Sample",
|
11
|
+
:contactName => "Marcus Cesar",
|
12
|
+
:emailAddress => "og3@example.com",
|
13
|
+
:country => "Ireland",
|
14
|
+
:timezone => "(GMT) Casablanca" #alternatively you can use "Campaigning.timezones" to get valid time zones list
|
15
|
+
)
|
16
|
+
puts "New Client created is: #{client.inspect}"
|
17
|
+
list = Campaigning::List.create!(
|
18
|
+
:clientID => client.clientID,
|
19
|
+
:title => "List from Sample Exec",
|
20
|
+
:unsubscribePage => "http://www.mycompany.com/campaign/ubsubscribe.html", #If not suplied or equals blank (""), default value will be used
|
21
|
+
:confirmOptIn => false,
|
22
|
+
:confirmationSuccessPage => "" #Default value will be used
|
23
|
+
)
|
24
|
+
# /SETUP FOR THIS SAMPLE ---------------------------------------------------------------------
|
25
|
+
|
26
|
+
|
27
|
+
# Here is how to create a campaign and send that campaign
|
28
|
+
client = Campaigning::Client.find_by_name("Client to Sample")
|
29
|
+
campaign = Campaigning::Campaign.create!(
|
30
|
+
:clientID => client.clientID,
|
31
|
+
:campaignName => "Campaign created for Campaign Sample",
|
32
|
+
:campaignSubject => "Campaign by myself - OK",
|
33
|
+
:fromName => "Mr. Gordon2",
|
34
|
+
:fromEmail => "gordon2@example.com",
|
35
|
+
:replyTo => "no-reply@example.com",
|
36
|
+
:htmlUrl => "http://www.mycompany.com/campaign_html",
|
37
|
+
:textUrl => "http://www.mycompany.com/campaign_text",
|
38
|
+
:subscriberListIDs => [list.listID],
|
39
|
+
:listSegments => client.segments
|
40
|
+
)
|
41
|
+
puts "New Campaign created is: #{campaign.inspect}"
|
42
|
+
#After create a campaign you can send as follow:
|
43
|
+
campaign.send!(
|
44
|
+
:confirmationEmail => "userhdhd@example.com",
|
45
|
+
:sendDate => DateTime.now #To send a campaign immediately pass in “Immediately”.
|
46
|
+
#This date should be in the users timezone and formatted as YYYY-MM-DD HH:MM:SS.
|
47
|
+
)
|
48
|
+
|
49
|
+
|
50
|
+
#Here is how to find a Campaign by subject.
|
51
|
+
#Return: It will return an Array of Campaign Objects
|
52
|
+
client = Campaigning::Client.find_by_name("Client to Sample")
|
53
|
+
campaigns = client.find_campaigns_by_subject("Campaign by myself - OK")
|
54
|
+
puts "Campaigns found are: #{campaigns.inspect}"
|
55
|
+
|
56
|
+
|
57
|
+
# Here is how to get all the bounces from a client Campaign
|
58
|
+
client = Campaigning::Client.find_by_name("Client to Sample")
|
59
|
+
client.campaigns.each do |campaign|
|
60
|
+
puts campaign.subject
|
61
|
+
puts campaign.bounces.inspect
|
62
|
+
end
|
63
|
+
# OR you could filter your campaigns by subject (Unortunately there is no way to get a campaign by his name, wich would be better):
|
64
|
+
client = Campaigning::Client.find_by_name("Client to Sample")
|
65
|
+
campaigns = client.find_campaigns_by_subject("Campaign by myself - OK")
|
66
|
+
puts "Bounces from a given campaign:"
|
67
|
+
campaigns.each do |campaign|
|
68
|
+
puts campaign.subject
|
69
|
+
puts campaign.bounces.inspect
|
70
|
+
end
|
71
|
+
|
72
|
+
|
73
|
+
#Here is how to get the Lists bellonging to a client Campaign
|
74
|
+
client = Campaigning::Client.find_by_name("Client to Sample")
|
75
|
+
campaigns = client.find_campaigns_by_subject("Campaign by myself - OK")
|
76
|
+
puts "Lists belonging to a given campaign: "
|
77
|
+
campaigns.each do |campaign|
|
78
|
+
puts campaign.subject
|
79
|
+
puts campaign.lists.inspect
|
80
|
+
end
|
81
|
+
|
82
|
+
|
83
|
+
#Here is how to get a list of all subscribers who opened a given campaign, and the number of times they opened the campaign
|
84
|
+
client = Campaigning::Client.find_by_name("Client One Company")
|
85
|
+
campaigns = client.find_campaigns_by_subject("Campaign by myself - OK")
|
86
|
+
subs_open = client.campaigns[0].opens
|
87
|
+
puts "Who opened a given campaign: #{subs_open.inspect}"
|
88
|
+
|
89
|
+
|
90
|
+
|
91
|
+
#Gets a list of all subscribers who clicked a link for a given campaign, the ID of the list they belong to,
|
92
|
+
#the links they clicked, and the number of times they clicked the link.
|
93
|
+
client = Campaigning::Client.find_by_name("Client to Sample")
|
94
|
+
subscriber_clicks = client.campaigns[0].subscriber_clicks
|
95
|
+
puts "Subscriber Clicks for a given campaign: #{subscriber_clicks.inspect}"
|
96
|
+
|
97
|
+
|
98
|
+
#Gets a statistical summary, including number of recipients and open count, for a given campaign.
|
99
|
+
client = Campaigning::Client.find_by_name("Client to Sample")
|
100
|
+
campaign = client.campaigns[1].summary
|
101
|
+
puts "Summary for a given campaign: #{campaign.inspect}"
|
102
|
+
|
103
|
+
|
104
|
+
#Gets a list of all subscribers who unsubscribed for a given campaign.
|
105
|
+
client = Campaigning::Client.find_by_name("Client to Sample")
|
106
|
+
campaign = client.campaigns[0].unsubscribes
|
107
|
+
puts "all subscribers who unsubscribed for a given campaign: #{campaign.inspect}"
|
108
|
+
|
109
|
+
|
110
|
+
|
111
|
+
|
112
|
+
# TEARDOWN FOR THIS SAMPLE --------------------------------------------------------------------
|
113
|
+
# Deleting a client created for this sample
|
114
|
+
client = Campaigning::Client.find_by_name("Client to Sample")
|
115
|
+
result = Campaigning::Client.delete!(client.clientID)
|
116
|
+
puts "Client deleted successfuly? #{result.message}"
|
@@ -0,0 +1,25 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'campaigning'
|
3
|
+
|
4
|
+
CAMPAIGN_MONITOR_API_KEY = '__PUT__YOUR__API__KEY__HERE__'
|
5
|
+
|
6
|
+
|
7
|
+
#How to get a system Date from the API server
|
8
|
+
date_time = Campaigning.system_date
|
9
|
+
|
10
|
+
puts "API get the system date from the API server: #{date_time.inspect}"
|
11
|
+
|
12
|
+
|
13
|
+
#Here is how to set the debug mode for the SOAP requests
|
14
|
+
timezones = Campaigning.set_debug_mode! true
|
15
|
+
puts "API set debug mode to true"
|
16
|
+
|
17
|
+
|
18
|
+
#Here is how to get all the timezones
|
19
|
+
timezones = Campaigning.timezones
|
20
|
+
puts "All the timezones supported: #{timezones.inspect}"
|
21
|
+
|
22
|
+
|
23
|
+
#Here is how to get all countries supported by the API
|
24
|
+
countries = Campaigning.countries
|
25
|
+
puts "All supported countries: #{countries.inspect}"
|
@@ -0,0 +1,139 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'campaigning'
|
3
|
+
|
4
|
+
CAMPAIGN_MONITOR_API_KEY = '__PUT__YOUR__API__KEY__HERE__'
|
5
|
+
|
6
|
+
|
7
|
+
# Here is how to get a list of all clients...
|
8
|
+
clients = Campaigning::Client.get_all_clients
|
9
|
+
puts "All my clients: #{clients.inspect}"
|
10
|
+
|
11
|
+
|
12
|
+
# Here is how to create a new client
|
13
|
+
client = Campaigning::Client.create!(
|
14
|
+
:companyName => "Company to Sample Client",
|
15
|
+
:contactName => "Oswald Green Sample",
|
16
|
+
:emailAddress => "og233@example.com",
|
17
|
+
:country => "Ireland",
|
18
|
+
:timezone => "(GMT) Greenwich Mean Time : Dublin, Edinburgh, Lisbon, London" #alternatively you can use "Campaigning.timezones" to get valid time zones list
|
19
|
+
)
|
20
|
+
puts "New Client created is: #{client.inspect}"
|
21
|
+
|
22
|
+
client_two = Campaigning::Client.create!(
|
23
|
+
:companyName => "Company Gordon",
|
24
|
+
:contactName => "Mr. Gordon",
|
25
|
+
:emailAddress => "gordon3@example.com",
|
26
|
+
:country => "Ireland",
|
27
|
+
:timezone => "(GMT) Greenwich Mean Time : Dublin, Edinburgh, Lisbon, London" #alternatively you can use "Campaigning.timezones" to get valid time zones list
|
28
|
+
)
|
29
|
+
puts "Other new Client created is: #{client_two.inspect}"
|
30
|
+
|
31
|
+
|
32
|
+
|
33
|
+
# SETUP FOR THIS SAMPLE ---------------------------------------------------------------------
|
34
|
+
#Creating a list for this sample execution
|
35
|
+
client = Campaigning::Client.find_by_name("Company to Sample Client")
|
36
|
+
list = Campaigning::List.create!(
|
37
|
+
:clientID => client.clientID,
|
38
|
+
:title => "List people from Chicago",
|
39
|
+
:confirmOptIn => false
|
40
|
+
)
|
41
|
+
# /SETUP FOR THIS SAMPLE ---------------------------------------------------------------------
|
42
|
+
|
43
|
+
|
44
|
+
#How to find a client by his name
|
45
|
+
client = Campaigning::Client.find_by_name("Company to Sample Client")
|
46
|
+
puts "Client retrieved by his name: #{client.inspect}"
|
47
|
+
|
48
|
+
|
49
|
+
#How to get all Lists belonging to a client
|
50
|
+
client = Campaigning::Client.find_by_name("Company to Sample Client")
|
51
|
+
lists = client.lists
|
52
|
+
puts "Lists belonging to the client: #{lists.inspect}"
|
53
|
+
|
54
|
+
|
55
|
+
#How to get a List by it's name and belonging to a client
|
56
|
+
client = Campaigning::Client.find_by_name("Company to Sample Client")
|
57
|
+
list = client.find_list_by_name("List people from Chicago")
|
58
|
+
puts "Lists belonging by his name: #{lists.inspect}"
|
59
|
+
|
60
|
+
|
61
|
+
#How to get a list of all campaigns that have been sent for a client.
|
62
|
+
client = Campaigning::Client.find_by_name("Company to Sample Client")
|
63
|
+
campaigns = client.campaigns
|
64
|
+
puts "Campaigns that have been sent for a client: #{campaigns.inspect}"
|
65
|
+
|
66
|
+
|
67
|
+
#How to get a list of all subscriber segments for a client.
|
68
|
+
client = Campaigning::Client.find_by_name("Company to Sample Client")
|
69
|
+
puts "All subscriber segments for a client: #{client.segments.inspect}"
|
70
|
+
|
71
|
+
|
72
|
+
#How to get all subscribers in the client-wide suppression list.
|
73
|
+
client = Campaigning::Client.find_by_name("Company to Sample Client")
|
74
|
+
puts "Client suppression list: #{client.suppression_list}"
|
75
|
+
|
76
|
+
|
77
|
+
#How to update the access and billing settings of an existing client, leaving the basic details untouched.
|
78
|
+
#Consult the API website for more information: http://www.campaignmonitor.com/api/method/client-updateaccessandbilling/
|
79
|
+
client = Campaigning::Client.find_by_name("Company to Sample Client")
|
80
|
+
response = client.update_access_and_billing!(
|
81
|
+
:accessLevel => 5 ,
|
82
|
+
:username => "client_comp_s",
|
83
|
+
:password => "1234560",
|
84
|
+
:billingType => "UserPaysOnClientsBehalf",
|
85
|
+
:currency => "USD",
|
86
|
+
:deliveryFee => 6.5,
|
87
|
+
:costPerRecipient => 1.5 ,
|
88
|
+
:designAndSpamTestFee => 5
|
89
|
+
)
|
90
|
+
puts "Was the Client successfuly updated?: #{response.message}"
|
91
|
+
|
92
|
+
|
93
|
+
#How to get the complete account and billing details for a particular client.
|
94
|
+
client = Campaigning::Client.find_by_name("Company to Sample Client")
|
95
|
+
#puts "Client details: #{client.details.inspect}"
|
96
|
+
puts "Client details: "
|
97
|
+
client_details = client.details
|
98
|
+
basic_details = client_details.basicDetails
|
99
|
+
access_and_billing_details = client_details.accessAndBilling
|
100
|
+
puts "Basic details:"
|
101
|
+
puts "Client ID: #{basic_details.clientID}\n
|
102
|
+
Company: #{basic_details.companyName}\n
|
103
|
+
Contact: #{basic_details.contactName}\n
|
104
|
+
Country: #{basic_details.country}\n
|
105
|
+
Timezone: #{basic_details.timezone}"
|
106
|
+
|
107
|
+
puts "Access and Billing Details:"
|
108
|
+
puts "Username: #{access_and_billing_details.username}\n
|
109
|
+
Password: #{access_and_billing_details.password}\n
|
110
|
+
Billing Type: #{access_and_billing_details.billingType}\n
|
111
|
+
Currency: #{access_and_billing_details.currency}\n
|
112
|
+
Delivery Fee: #{access_and_billing_details.deliveryFee}\n
|
113
|
+
Cost per Recipient: #{access_and_billing_details.costPerRecipient}\n
|
114
|
+
Design and Span test Fee: #{access_and_billing_details.designAndSpamTestFee}\n
|
115
|
+
Access Level: #{access_and_billing_details.accessLevel}"
|
116
|
+
|
117
|
+
|
118
|
+
|
119
|
+
#How to update the basic details of an existing client.
|
120
|
+
#Please note that the client’s existing access and billing details will remain unchanged by a call to Client.update_basics!.
|
121
|
+
client_two = Campaigning::Client.find_by_name("Company Gordon")
|
122
|
+
response = client.update_basics!(
|
123
|
+
:companyName => "My new Company",
|
124
|
+
:contactName => "Mr. Gordon Newman",
|
125
|
+
:emailAddress => "gordon-newman43@example.com",
|
126
|
+
:country => "Ireland",
|
127
|
+
:timezone => "(GMT) Greenwich Mean Time : Dublin, Edinburgh, Lisbon, London"
|
128
|
+
)
|
129
|
+
puts "Was the other Client successfuly updated?: #{response.message}"
|
130
|
+
|
131
|
+
|
132
|
+
# Here is how to delete a client
|
133
|
+
result = Campaigning::Client.delete!(client.clientID)
|
134
|
+
puts "Client deleted successfuly? #{result.message}"
|
135
|
+
#Or you can use a instance method like:
|
136
|
+
client = Campaigning::Client.find_by_name("My new Company")
|
137
|
+
result = client.delete!
|
138
|
+
puts "Client two deleted successfuly? #{result.message}"
|
139
|
+
|