campaigning 0.15.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|
+
|