createsend 5.1.1 → 6.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/HISTORY.md +30 -0
- data/README.md +2 -2
- data/createsend.gemspec +1 -1
- data/lib/createsend/client.rb +19 -3
- data/lib/createsend/createsend.rb +1 -1
- data/lib/createsend/list.rb +13 -12
- data/lib/createsend/subscriber.rb +8 -4
- data/lib/createsend/version.rb +1 -1
- data/samples/authentication_sample.rb +64 -0
- data/samples/clients_sample.rb +79 -0
- data/samples/journey_sample.rb +3 -2
- data/samples/lists_sample.rb +51 -0
- data/samples/segments_sample.rb +21 -0
- data/samples/subscribers_sample.rb +51 -0
- data/test/administrator_test.rb +5 -5
- data/test/campaign_test.rb +114 -113
- data/test/client_test.rb +121 -98
- data/test/createsend_test.rb +47 -47
- data/test/fixtures/active_subscribers.json +5 -0
- data/test/fixtures/bounced_subscribers.json +1 -0
- data/test/fixtures/campaign_summary.json +2 -1
- data/test/fixtures/campaigns.json +37 -26
- data/test/fixtures/deleted_subscribers.json +5 -0
- data/test/fixtures/drafts.json +4 -2
- data/test/fixtures/scheduled_campaigns.json +4 -2
- data/test/fixtures/segment_subscribers.json +2 -0
- data/test/fixtures/subscriber_details.json +2 -0
- data/test/fixtures/{subscriber_details_with_track_pref.json → subscriber_details_with_track_and_sms_pref.json} +4 -1
- data/test/fixtures/tags.json +10 -0
- data/test/fixtures/unconfirmed_subscribers.json +6 -2
- data/test/fixtures/unsubscribed_subscribers.json +6 -1
- data/test/helper.rb +1 -1
- data/test/journey_test.rb +86 -86
- data/test/list_test.rb +130 -123
- data/test/person_test.rb +6 -6
- data/test/segment_test.rb +23 -22
- data/test/subscriber_test.rb +55 -51
- data/test/template_test.rb +5 -5
- data/test/transactional_classic_email_test.rb +6 -6
- data/test/transactional_smart_email_test.rb +19 -19
- data/test/transactional_timeline_test.rb +25 -25
- metadata +16 -113
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: aacabbc393f38cd9a35d6c304c9cc0c1381173d0b13ec6133e477524cd126225
|
4
|
+
data.tar.gz: cec43502b0d8c4e71d0ec34ba441d7c04e10ff64ed28ae6cc85b4f3b37c7a31b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: db70e62fafe46cdae685f167076de7cf6d85c222933cd4c2110e8348f29a0b318d3be1d7ccb2c85d78837829c896f030e1dec45fc87318dd136e66b05f74e15a
|
7
|
+
data.tar.gz: 8a51368024b9db927b734d09c7f4473c79ecb6c2a71cddcc17ceafca5a07ad243f680d7dc24739667e1887aee75535ee307b61a30eb8fd9920f7f5b506e4a8ca
|
data/HISTORY.md
CHANGED
@@ -1,5 +1,35 @@
|
|
1
1
|
# createsend-ruby history
|
2
2
|
|
3
|
+
## v6.1.0 - 27 Oct 2023
|
4
|
+
* Added support for add/update subscribers specifying mobile_number and/or consent_to_send_sms (optional parameters)
|
5
|
+
* Subscriber.Add
|
6
|
+
* Subscriber.Update()
|
7
|
+
* Added support for lists endpoints to be able to return the ConsentToSendSms (keyword parameter, is optional)
|
8
|
+
* List.Active(include_sms_preference:true)
|
9
|
+
* List.Bounced(include_sms_preference:true)
|
10
|
+
* List.Unsubscribed(include_sms_preference:true)
|
11
|
+
* List.Unconfirmed(include_sms_preference:true)
|
12
|
+
* List.Deleted(include_sms_preference:true)
|
13
|
+
* Clean-up various warnings associated with this package (excluding dependency package warning)
|
14
|
+
* Add more samples
|
15
|
+
|
16
|
+
## v6.0.0 - 10 Feb, 2022
|
17
|
+
* Upgrades to Createsend API v3.3 which includes new breaking changes
|
18
|
+
* Breaking: 'client.campaigns' now returned an object to support pagination (use .Results to ge the array of campaigns)
|
19
|
+
* Added 'Tags' as another field that is returned in 'client.scheduled', 'client.drafts' and 'client.campaigns'
|
20
|
+
* Added 'Name' as another field that is returned in 'campaign.summary'
|
21
|
+
* Add new support for 'client.tags' endpoint (ie: getting list of tags for the client)
|
22
|
+
* Add support for pagination, filtering and sorting to 'client.campaigns' endpoint
|
23
|
+
* Bump `rake` to `~> 12.3.3`
|
24
|
+
* Adding support for returning ListJoinedDate for each subscriber.
|
25
|
+
* List.Active()
|
26
|
+
* List.Bounced()
|
27
|
+
* List.Unsubscribed()
|
28
|
+
* List.Unconfirmed()
|
29
|
+
* List.Deleted()
|
30
|
+
* Segment.Subscribers()
|
31
|
+
* Subscriber.Get()
|
32
|
+
|
3
33
|
## v5.1.1 - 8 Oct, 2021
|
4
34
|
* increased default timeout for HTTP requests to 120secs
|
5
35
|
|
data/README.md
CHANGED
@@ -133,7 +133,7 @@ clients.each do |cl|
|
|
133
133
|
p "Client: #{cl.Name}"
|
134
134
|
client = CreateSend::Client.new auth, cl.ClientID
|
135
135
|
p "- Campaigns:"
|
136
|
-
client.
|
136
|
+
client.drafts.each do |cm|
|
137
137
|
p " - #{cm.Subject}"
|
138
138
|
end
|
139
139
|
end
|
@@ -194,7 +194,7 @@ should "add a subscriber with custom fields" do
|
|
194
194
|
stub_post(@auth, "subscribers/#{@list_id}.json", "add_subscriber.json")
|
195
195
|
custom_fields = [ { :Key => 'website', :Value => 'http://example.com/' } ]
|
196
196
|
email_address = CreateSend::Subscriber.add @auth, @list_id, "subscriber@example.com", "Subscriber", custom_fields, true, "Yes"
|
197
|
-
email_address.should == "subscriber@example.com"
|
197
|
+
email_address.should be == "subscriber@example.com"
|
198
198
|
end
|
199
199
|
```
|
200
200
|
|
data/createsend.gemspec
CHANGED
@@ -7,7 +7,7 @@ Gem::Specification.new do |s|
|
|
7
7
|
s.add_runtime_dependency 'json', '>= 1.0'
|
8
8
|
s.add_runtime_dependency 'hashie', '~> 3.0'
|
9
9
|
s.add_runtime_dependency 'httparty', '~> 0.14'
|
10
|
-
s.add_development_dependency 'rake', '~>
|
10
|
+
s.add_development_dependency 'rake', '~> 12.3.3'
|
11
11
|
s.add_development_dependency 'fakeweb', '~> 1.3'
|
12
12
|
s.add_development_dependency 'jnunemaker-matchy', '~> 0.4'
|
13
13
|
s.add_development_dependency 'shoulda-context', '~> 1.2'
|
data/lib/createsend/client.rb
CHANGED
@@ -25,9 +25,19 @@ module CreateSend
|
|
25
25
|
end
|
26
26
|
|
27
27
|
# Gets the sent campaigns belonging to this client.
|
28
|
-
def campaigns
|
29
|
-
|
30
|
-
|
28
|
+
def campaigns(page=1, page_size=1000, order_direction="desc",
|
29
|
+
sent_from_date='', sent_to_date='', tags='')
|
30
|
+
options = { :query => {
|
31
|
+
:page => page,
|
32
|
+
:pagesize => page_size,
|
33
|
+
:orderdirection => order_direction,
|
34
|
+
:sentfromdate => sent_from_date,
|
35
|
+
:senttodate => sent_to_date,
|
36
|
+
:tags => tags
|
37
|
+
}}
|
38
|
+
|
39
|
+
response = get 'campaigns', options
|
40
|
+
Hashie::Mash.new(response)
|
31
41
|
end
|
32
42
|
|
33
43
|
# Gets the currently scheduled campaigns belonging to this client.
|
@@ -42,6 +52,12 @@ module CreateSend
|
|
42
52
|
response.map{|item| Hashie::Mash.new(item)}
|
43
53
|
end
|
44
54
|
|
55
|
+
# Gets all the tags belonging to this client.
|
56
|
+
def tags
|
57
|
+
response = get 'tags'
|
58
|
+
response.map{|item| Hashie::Mash.new(item)}
|
59
|
+
end
|
60
|
+
|
45
61
|
# Gets the subscriber lists belonging to this client.
|
46
62
|
def lists
|
47
63
|
response = get 'lists'
|
@@ -111,7 +111,7 @@ module CreateSend
|
|
111
111
|
end
|
112
112
|
end
|
113
113
|
|
114
|
-
@@base_uri = "https://api.createsend.com/api/v3.
|
114
|
+
@@base_uri = "https://api.createsend.com/api/v3.3"
|
115
115
|
@@oauth_base_uri = "https://api.createsend.com/oauth"
|
116
116
|
@@oauth_token_uri = "#{@@oauth_base_uri}/token"
|
117
117
|
headers({
|
data/lib/createsend/list.rb
CHANGED
@@ -116,37 +116,37 @@ module CreateSend
|
|
116
116
|
|
117
117
|
# Gets the active subscribers for this list.
|
118
118
|
def active(date="", page=1, page_size=1000, order_field="email",
|
119
|
-
order_direction="asc", include_tracking_preference=false)
|
119
|
+
order_direction="asc", include_tracking_preference=false, include_sms_preference:false)
|
120
120
|
paged_result_by_date("active", date, page, page_size, order_field,
|
121
|
-
order_direction, include_tracking_preference)
|
121
|
+
order_direction, include_tracking_preference, include_sms_preference)
|
122
122
|
end
|
123
123
|
|
124
124
|
# Gets the unconfirmed subscribers for this list.
|
125
125
|
def unconfirmed(date="", page=1, page_size=1000, order_field="email",
|
126
|
-
order_direction="asc", include_tracking_preference=false)
|
126
|
+
order_direction="asc", include_tracking_preference=false, include_sms_preference:false)
|
127
127
|
paged_result_by_date("unconfirmed", date, page, page_size, order_field,
|
128
|
-
order_direction, include_tracking_preference)
|
128
|
+
order_direction, include_tracking_preference, include_sms_preference)
|
129
129
|
end
|
130
130
|
|
131
131
|
# Gets the bounced subscribers for this list.
|
132
132
|
def bounced(date="", page=1, page_size=1000, order_field="email",
|
133
|
-
order_direction="asc", include_tracking_preference=false)
|
133
|
+
order_direction="asc", include_tracking_preference=false, include_sms_preference:false)
|
134
134
|
paged_result_by_date("bounced", date, page, page_size, order_field,
|
135
|
-
order_direction, include_tracking_preference)
|
135
|
+
order_direction, include_tracking_preference, include_sms_preference)
|
136
136
|
end
|
137
137
|
|
138
138
|
# Gets the unsubscribed subscribers for this list.
|
139
139
|
def unsubscribed(date="", page=1, page_size=1000, order_field="email",
|
140
|
-
order_direction="asc", include_tracking_preference=false)
|
140
|
+
order_direction="asc", include_tracking_preference=false, include_sms_preference:false)
|
141
141
|
paged_result_by_date("unsubscribed", date, page, page_size, order_field,
|
142
|
-
order_direction, include_tracking_preference)
|
142
|
+
order_direction, include_tracking_preference, include_sms_preference)
|
143
143
|
end
|
144
144
|
|
145
145
|
# Gets the deleted subscribers for this list.
|
146
146
|
def deleted(date="", page=1, page_size=1000, order_field="email",
|
147
|
-
order_direction="asc", include_tracking_preference=false)
|
147
|
+
order_direction="asc", include_tracking_preference=false, include_sms_preference:false)
|
148
148
|
paged_result_by_date("deleted", date, page, page_size, order_field,
|
149
|
-
order_direction, include_tracking_preference)
|
149
|
+
order_direction, include_tracking_preference, include_sms_preference)
|
150
150
|
end
|
151
151
|
|
152
152
|
# Updates this list.
|
@@ -225,14 +225,15 @@ module CreateSend
|
|
225
225
|
private
|
226
226
|
|
227
227
|
def paged_result_by_date(resource, date, page, page_size, order_field,
|
228
|
-
order_direction, include_tracking_preference)
|
228
|
+
order_direction, include_tracking_preference, include_sms_preference)
|
229
229
|
options = { :query => {
|
230
230
|
:date => date,
|
231
231
|
:page => page,
|
232
232
|
:pagesize => page_size,
|
233
233
|
:orderfield => order_field,
|
234
234
|
:orderdirection => order_direction,
|
235
|
-
:includetrackingpreference => include_tracking_preference
|
235
|
+
:includetrackingpreference => include_tracking_preference,
|
236
|
+
:includesmspreference => include_sms_preference} }
|
236
237
|
response = get resource, options
|
237
238
|
Hashie::Mash.new(response)
|
238
239
|
end
|
@@ -23,15 +23,17 @@ module CreateSend
|
|
23
23
|
|
24
24
|
# Adds a subscriber to a subscriber list.
|
25
25
|
def self.add(auth, list_id, email_address, name, custom_fields, resubscribe,
|
26
|
-
consent_to_track, restart_subscription_based_autoresponders=false)
|
26
|
+
consent_to_track, restart_subscription_based_autoresponders=false, mobile_number=nil, consent_to_send_sms=nil)
|
27
27
|
options = { :body => {
|
28
28
|
:EmailAddress => email_address,
|
29
29
|
:Name => name,
|
30
|
+
:MobileNumber => mobile_number,
|
30
31
|
:CustomFields => custom_fields,
|
31
32
|
:Resubscribe => resubscribe,
|
32
33
|
:RestartSubscriptionBasedAutoresponders =>
|
33
34
|
restart_subscription_based_autoresponders,
|
34
|
-
:ConsentToTrack => consent_to_track
|
35
|
+
:ConsentToTrack => consent_to_track,
|
36
|
+
:ConsentToSendSms => consent_to_send_sms }.to_json }
|
35
37
|
cs = CreateSend.new auth
|
36
38
|
response = cs.post "/subscribers/#{list_id}.json", options
|
37
39
|
response.parsed_response
|
@@ -70,17 +72,19 @@ module CreateSend
|
|
70
72
|
# Updates any aspect of a subscriber, including email address, name, and
|
71
73
|
# custom field data if supplied.
|
72
74
|
def update(new_email_address, name, custom_fields, resubscribe,
|
73
|
-
consent_to_track, restart_subscription_based_autoresponders=false)
|
75
|
+
consent_to_track, restart_subscription_based_autoresponders=false, mobile_number=nil, consent_to_send_sms=nil)
|
74
76
|
options = {
|
75
77
|
:query => { :email => @email_address },
|
76
78
|
:body => {
|
77
79
|
:EmailAddress => new_email_address,
|
78
80
|
:Name => name,
|
81
|
+
:MobileNumber => mobile_number,
|
79
82
|
:CustomFields => custom_fields,
|
80
83
|
:Resubscribe => resubscribe,
|
81
84
|
:RestartSubscriptionBasedAutoresponders =>
|
82
85
|
restart_subscription_based_autoresponders,
|
83
|
-
:ConsentToTrack => consent_to_track
|
86
|
+
:ConsentToTrack => consent_to_track,
|
87
|
+
:ConsentToSendSms => consent_to_send_sms }.to_json }
|
84
88
|
put "/subscribers/#{@list_id}.json", options
|
85
89
|
# Update @email_address, so this object can continue to be used reliably
|
86
90
|
@email_address = new_email_address
|
data/lib/createsend/version.rb
CHANGED
@@ -0,0 +1,64 @@
|
|
1
|
+
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
2
|
+
require 'createsend'
|
3
|
+
|
4
|
+
class AuthorizationSample
|
5
|
+
def initialize
|
6
|
+
raise 'CREATESEND_API_KEY env var missing' if ENV['CREATESEND_API_KEY'].nil?
|
7
|
+
raise 'CREATESEND_CLIENT_ID env var missing' if ENV['CREATESEND_CLIENT_ID'].nil?
|
8
|
+
raise 'CREATESEND_OAUTH_CLIENT_ID env var missing' if ENV['CREATESEND_OAUTH_CLIENT_ID'].nil?
|
9
|
+
raise 'CREATESEND_OAUTH_CLIENT_SECRET env var missing' if ENV['CREATESEND_OAUTH_CLIENT_SECRET'].nil?
|
10
|
+
raise 'CREATESEND_OAUTH_REDIRECT_URL env var missing' if ENV['CREATESEND_OAUTH_REDIRECT_URL'].nil?
|
11
|
+
raise 'CREATESEND_OAUTH_SCOPE env var missing' if ENV['CREATESEND_OAUTH_SCOPE'].nil?
|
12
|
+
|
13
|
+
@createsendApiKey = ENV['CREATESEND_API_KEY']
|
14
|
+
@oauthClientId = ENV['CREATESEND_OAUTH_CLIENT_ID']
|
15
|
+
@oauthClientSecret = ENV['CREATESEND_OAUTH_CLIENT_SECRET']
|
16
|
+
@oauthRedirectUrl = ENV['CREATESEND_OAUTH_REDIRECT_URL']
|
17
|
+
@oauthScope = ENV['CREATESEND_OAUTH_SCOPE']
|
18
|
+
)
|
19
|
+
end
|
20
|
+
|
21
|
+
def authentication_with_api_key
|
22
|
+
auth = {:api_key => @createsendApiKey}
|
23
|
+
@client = CreateSend::Client.new auth, @createsendClientId
|
24
|
+
|
25
|
+
@client.scheduled
|
26
|
+
end
|
27
|
+
|
28
|
+
def get_authorise_url
|
29
|
+
state = 'some state data'
|
30
|
+
|
31
|
+
@authorize_url = CreateSend::CreateSend.authorize_url(@oauthClientId, @oauthRedirectUrl, @oauthScope, state);
|
32
|
+
end
|
33
|
+
|
34
|
+
def exchange_token(code)
|
35
|
+
CreateSend::CreateSend.exchange_token(
|
36
|
+
client_id=@oauthClientId,
|
37
|
+
client_secret=@oauthClientSecret,
|
38
|
+
redirect_uri=@oauthRedirectUrl,
|
39
|
+
code=code # Get the code from the query string after hitting authorise url
|
40
|
+
)
|
41
|
+
end
|
42
|
+
|
43
|
+
def authentication_with_oauth(access_token, refresh_token)
|
44
|
+
auth = {:access_token => access_token, :refresh_token => refresh_token}
|
45
|
+
@client = CreateSend::Client.new auth, @createsendClientId
|
46
|
+
|
47
|
+
@client.scheduled
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
sample = AuthorizationSample.new
|
52
|
+
authoriseUrl = sample.get_authorise_url
|
53
|
+
# hit the authorise url, where you would be redirected and receive the code parameter in the query string
|
54
|
+
access_token, expires_in, refresh_token = sample.exchange_token('code that you get once you hit authorize url')
|
55
|
+
|
56
|
+
puts "Getting scheduled campaigns with api authentication: #{sample.authentication_with_api_key.to_json}\n\n"
|
57
|
+
puts "Getting authorise url: #{authoriseUrl.to_json}\n\n"
|
58
|
+
puts "Getting access_token: #{access_token.to_json}\n\n"
|
59
|
+
puts "Getting scheduled campaigns with oauth authentication: #{sample.authentication_with_oauth(access_token, refresh_token).to_json}\n\n"
|
60
|
+
|
61
|
+
|
62
|
+
@client.scheduled
|
63
|
+
end
|
64
|
+
end
|
@@ -0,0 +1,79 @@
|
|
1
|
+
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
2
|
+
require 'createsend'
|
3
|
+
|
4
|
+
class ClientsSample
|
5
|
+
def initialize
|
6
|
+
raise 'CREATESEND_ACCESS_TOKEN env var missing' if ENV['CREATESEND_ACCESS_TOKEN'].nil?
|
7
|
+
raise 'CREATESEND_REFRESH_TOKEN env var missing' if ENV['CREATESEND_REFRESH_TOKEN'].nil?
|
8
|
+
raise 'CREATESEND_CLIENT_ID env var missing' if ENV['CREATESEND_CLIENT_ID'].nil?
|
9
|
+
|
10
|
+
auth = auth = {:access_token => ENV['CREATESEND_ACCESS_TOKEN'], :refresh_token => ENV['CREATESEND_REFRESH_TOKEN']}
|
11
|
+
@client = CreateSend::Client.new auth, ENV['CREATESEND_CLIENT_ID']
|
12
|
+
end
|
13
|
+
|
14
|
+
def get_all_sent_campaigns
|
15
|
+
campaigns = []
|
16
|
+
page_number = 1
|
17
|
+
loop do
|
18
|
+
page = @client.campaigns(page_number)
|
19
|
+
page_number += 1
|
20
|
+
campaigns.concat(page.Results)
|
21
|
+
if page.PageNumber == page.NumberOfPages
|
22
|
+
break
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
campaigns
|
27
|
+
end
|
28
|
+
|
29
|
+
def get_sent_campaigns_with_tag_filter
|
30
|
+
filtered_campaigns = []
|
31
|
+
page_number = 1
|
32
|
+
loop do
|
33
|
+
page = @client.campaigns(page_number, 1000, 'desc', '', '', 'tag_example, tag_example_2')
|
34
|
+
page_number += 1
|
35
|
+
filtered_campaigns.concat(page.Results)
|
36
|
+
if page.PageNumber == page.NumberOfPages
|
37
|
+
break
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
filtered_campaigns
|
42
|
+
end
|
43
|
+
|
44
|
+
def get_2021_sent_campaigns
|
45
|
+
2021_campaigns = []
|
46
|
+
page_number = 1
|
47
|
+
loop do
|
48
|
+
page = @client.campaigns(1, 1000, 'desc', '2021-01-01', '2022-01-01', '')
|
49
|
+
page_number += 1
|
50
|
+
2021_campaigns.concat(page.Results)
|
51
|
+
if page.PageNumber == page.NumberOfPages
|
52
|
+
break
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
2021_campaigns
|
57
|
+
end
|
58
|
+
|
59
|
+
def get_all_scheduled_campaigns
|
60
|
+
@client.scheduled
|
61
|
+
end
|
62
|
+
|
63
|
+
def get_all_draft_campaigns
|
64
|
+
@client.drafts
|
65
|
+
end
|
66
|
+
|
67
|
+
def get_all_client_tags
|
68
|
+
@client.tags
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
sample = ClientsSample.new
|
73
|
+
|
74
|
+
puts "All sent campaigns: #{sample.get_all_sent_campaigns.to_json}\n\n"
|
75
|
+
puts "All sent campaigns with `tag_example` and `tag_example_2` tag: #{sample.get_sent_campaigns_with_tag_filter.to_json}\n\n"
|
76
|
+
puts "All 2021 sent campaigns: #{sample.get_2021_sent_campaigns.to_json}\n\n"
|
77
|
+
puts "All scheduled campaigns: #{sample.get_all_scheduled_campaigns.to_json}\n\n"
|
78
|
+
puts "All draft campaigns: #{sample.get_all_draft_campaigns.to_json}\n\n"
|
79
|
+
puts "All client tags: #{sample.get_all_client_tags.to_json}\n\n"
|
data/samples/journey_sample.rb
CHANGED
@@ -5,12 +5,13 @@ class JourneySample
|
|
5
5
|
@date = "2019-01-01 00:00"
|
6
6
|
|
7
7
|
def initialize
|
8
|
-
raise '
|
8
|
+
raise 'CREATESEND_ACCESS_TOKEN env var missing' if ENV['CREATESEND_ACCESS_TOKEN'].nil?
|
9
|
+
raise 'CREATESEND_REFRESH_TOKEN env var missing' if ENV['CREATESEND_REFRESH_TOKEN'].nil?
|
9
10
|
raise 'CREATESEND_CLIENT_ID env var missing' if ENV['CREATESEND_CLIENT_ID'].nil?
|
10
11
|
raise 'CREATESEND_JOURNEY_ID env var missing' if ENV['CREATESEND_JOURNEY_ID'].nil?
|
11
12
|
raise 'CREATESEND_EMAIL_ID env var missing' if ENV['CREATESEND_EMAIL_ID'].nil?
|
12
13
|
|
13
|
-
auth = {:
|
14
|
+
auth = {:access_token => ENV['CREATESEND_ACCESS_TOKEN'], :refresh_token => ENV['CREATESEND_REFRESH_TOKEN']}
|
14
15
|
@client = CreateSend::Client.new auth, ENV['CREATESEND_CLIENT_ID']
|
15
16
|
@journey = CreateSend::Journey.new auth, ENV['CREATESEND_JOURNEY_ID']
|
16
17
|
end
|
@@ -0,0 +1,51 @@
|
|
1
|
+
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
2
|
+
require 'createsend'
|
3
|
+
|
4
|
+
class ListsSample
|
5
|
+
def initialize
|
6
|
+
raise 'CREATESEND_ACCESS_TOKEN env var missing' if ENV['CREATESEND_ACCESS_TOKEN'].nil?
|
7
|
+
raise 'CREATESEND_REFRESH_TOKEN env var missing' if ENV['CREATESEND_REFRESH_TOKEN'].nil?
|
8
|
+
raise 'CREATESEND_LIST_ID env var missing' if ENV['CREATESEND_LIST_ID'].nil?
|
9
|
+
|
10
|
+
auth = {:access_token => ENV['CREATESEND_ACCESS_TOKEN'], :refresh_token => ENV['CREATESEND_REFRESH_TOKEN']}
|
11
|
+
@list = CreateSend::List.new auth, ENV['CREATESEND_LIST_ID']
|
12
|
+
end
|
13
|
+
|
14
|
+
def get_active_subscribers
|
15
|
+
@list.active()
|
16
|
+
end
|
17
|
+
|
18
|
+
def get_active_with_sms_preference_subscribers
|
19
|
+
@list.active(include_sms_preference:true)
|
20
|
+
end
|
21
|
+
|
22
|
+
def get_bounced_subscribers
|
23
|
+
@list.bounced
|
24
|
+
end
|
25
|
+
|
26
|
+
def get_unsubscribed_subscribers
|
27
|
+
@list.unsubscribed
|
28
|
+
end
|
29
|
+
|
30
|
+
def get_unsubscribed_with_sms_preference_subscribers
|
31
|
+
@list.unsubscribed(include_sms_preference:true)
|
32
|
+
end
|
33
|
+
|
34
|
+
def get_unconfirmed_subscribers
|
35
|
+
@list.unconfirmed
|
36
|
+
end
|
37
|
+
|
38
|
+
def get_deleted_subscribers
|
39
|
+
@list.deleted
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
sample = ListsSample.new
|
44
|
+
|
45
|
+
puts "All active subscribers: #{sample.get_active_subscribers.to_json}\n\n"
|
46
|
+
puts "All active subscribers with sms preference: #{sample.get_active_with_sms_preference_subscribers.to_json}\n\n"
|
47
|
+
puts "All bounced subscribers: #{sample.get_bounced_subscribers.to_json}\n\n"
|
48
|
+
puts "All unconfirmed subscribers: #{sample.get_unconfirmed_subscribers.to_json}\n\n"
|
49
|
+
puts "All unsubscribed subscribers: #{sample.get_unsubscribed_subscribers.to_json}\n\n"
|
50
|
+
puts "All unsubscribed subscribers with sms preference: #{sample.get_unsubscribed_with_sms_preference_subscribers.to_json}\n\n"
|
51
|
+
puts "All deleted subscribers: #{sample.get_deleted_subscribers.to_json}\n\n"
|
@@ -0,0 +1,21 @@
|
|
1
|
+
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
2
|
+
require 'createsend'
|
3
|
+
|
4
|
+
class SegmentsSample
|
5
|
+
def initialize
|
6
|
+
raise 'CREATESEND_ACCESS_TOKEN env var missing' if ENV['CREATESEND_ACCESS_TOKEN'].nil?
|
7
|
+
raise 'CREATESEND_REFRESH_TOKEN env var missing' if ENV['CREATESEND_REFRESH_TOKEN'].nil?
|
8
|
+
raise 'CREATESEND_SEGMENT_ID env var missing' if ENV['CREATESEND_SEGMENT_ID'].nil?
|
9
|
+
|
10
|
+
auth = {:access_token => ENV['CREATESEND_ACCESS_TOKEN'], :refresh_token => ENV['CREATESEND_REFRESH_TOKEN']}
|
11
|
+
@segment = CreateSend::Segment.new auth, ENV['CREATESEND_SEGMENT_ID']
|
12
|
+
end
|
13
|
+
|
14
|
+
def get_active_subscribers
|
15
|
+
@segment.subscribers
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
sample = SegmentsSample.new
|
20
|
+
|
21
|
+
puts "All active subscribers: #{sample.get_active_subscribers.to_json}\n\n"
|
@@ -0,0 +1,51 @@
|
|
1
|
+
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
2
|
+
require 'createsend'
|
3
|
+
|
4
|
+
class SubscribersSample
|
5
|
+
def initialize
|
6
|
+
raise 'CREATESEND_ACCESS_TOKEN env var missing' if ENV['CREATESEND_ACCESS_TOKEN'].nil?
|
7
|
+
raise 'CREATESEND_REFRESH_TOKEN env var missing' if ENV['CREATESEND_REFRESH_TOKEN'].nil?
|
8
|
+
raise 'CREATESEND_LIST_ID env var missing' if ENV['CREATESEND_LIST_ID'].nil?
|
9
|
+
|
10
|
+
@auth = {:access_token => ENV['CREATESEND_ACCESS_TOKEN'], :refresh_token => ENV['CREATESEND_REFRESH_TOKEN']}
|
11
|
+
end
|
12
|
+
|
13
|
+
def add_subscriber_without_mobile
|
14
|
+
@subscriberAdded = CreateSend::Subscriber.add @auth, ENV['CREATESEND_LIST_ID'], "subscriberNoMobile@example.com", "Subscriber", [], true, "Yes", false
|
15
|
+
end
|
16
|
+
|
17
|
+
def add_subscriber_with_mobile
|
18
|
+
@subscriberAdded = CreateSend::Subscriber.add @auth, ENV['CREATESEND_LIST_ID'], "subscriberWithMobile@example.com", "SubscriberWithMobile", [], true, "Yes", false, "+61423152523"
|
19
|
+
end
|
20
|
+
|
21
|
+
def add_subscriber_with_mobile_and_consent
|
22
|
+
@subscriberAdded = CreateSend::Subscriber.add @auth, ENV['CREATESEND_LIST_ID'], "subscriberWithMobileAndConsent@example.com", "SubscriberWithMobileAndConsent", [], true, "Yes", false, "+61423152523", "Yes"
|
23
|
+
end
|
24
|
+
|
25
|
+
def get_subscriber
|
26
|
+
@subscriber = CreateSend::Subscriber.get @auth, ENV['CREATESEND_LIST_ID'], "subscriberNoMobile@example.com"
|
27
|
+
end
|
28
|
+
|
29
|
+
def import_subscribers
|
30
|
+
subscribers = [
|
31
|
+
{"EmailAddress":"subscriberImport11@example.com","Name":"subscriberImport11", "ConsentToTrack":"Yes"},
|
32
|
+
{"EmailAddress":"subscriberImport12@example.com","Name":"subscriberImport12", "ConsentToTrack":"No", "MobileNumber":"+1612105111", "ConsentToSendSms":"Yes"},
|
33
|
+
{"EmailAddress":"subscriberImport13@example.com","Name":"subscriberImport13", "ConsentToTrack":"Yes", "MobileNumber":"+1612105112"}
|
34
|
+
]
|
35
|
+
@subscribersImported = CreateSend::Subscriber.import(@auth, ENV['CREATESEND_LIST_ID'], subscribers, true, false, false)
|
36
|
+
end
|
37
|
+
|
38
|
+
def update_subscribers
|
39
|
+
@subscriber = CreateSend::Subscriber.new(@auth, ENV['CREATESEND_LIST_ID'], 'subscriberWithMobileAndConsent@example.com')
|
40
|
+
@subscriberUpdated = @subscriber.update("subscriberWithMobileAndConsent@example.com", "Subscriber With Mobile And Consent", [], true, "Yes", false, "+16175551218")
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
sample = SubscribersSample.new
|
45
|
+
|
46
|
+
puts "add_subscriber_without_mobile: #{sample.add_subscriber_without_mobile.to_json}\n\n"
|
47
|
+
puts "add_subscriber_with_mobile: #{sample.add_subscriber_with_mobile.to_json}\n\n"
|
48
|
+
puts "add_subscriber_with_mobile_and_consent: #{sample.add_subscriber_with_mobile_and_consent.to_json}\n\n"
|
49
|
+
puts "get subscribers: #{sample.get_subscriber.to_json}\n\n"
|
50
|
+
puts "import_subscribers: #{sample.import_subscribers.to_json}\n\n"
|
51
|
+
puts "update_subscribers: #{sample.update_subscribers.to_json}\n\n"
|
data/test/administrator_test.rb
CHANGED
@@ -10,15 +10,15 @@ class AdministratorTest < Test::Unit::TestCase
|
|
10
10
|
email = "admin@example.com"
|
11
11
|
stub_get(@auth, "admins.json?email=#{ERB::Util.url_encode(email)}", "admin_details.json")
|
12
12
|
admin = CreateSend::Administrator.get @auth, email
|
13
|
-
admin.EmailAddress.should == email
|
14
|
-
admin.Name.should == "Admin One"
|
15
|
-
admin.Status.should == "Active"
|
13
|
+
admin.EmailAddress.should be == email
|
14
|
+
admin.Name.should be == "Admin One"
|
15
|
+
admin.Status.should be == "Active"
|
16
16
|
end
|
17
17
|
|
18
18
|
should "add an administrator" do
|
19
19
|
stub_post(@auth, "admins.json", "add_admin.json")
|
20
20
|
result = CreateSend::Administrator.add @auth, "admin@example.com", "Admin"
|
21
|
-
result.EmailAddress.should == "admin@example.com"
|
21
|
+
result.EmailAddress.should be == "admin@example.com"
|
22
22
|
end
|
23
23
|
|
24
24
|
should "update an administrator" do
|
@@ -26,7 +26,7 @@ class AdministratorTest < Test::Unit::TestCase
|
|
26
26
|
new_email = "new_email_address@example.com"
|
27
27
|
stub_put(@auth, "admins.json?email=#{ERB::Util.url_encode(email)}", nil)
|
28
28
|
@admin.update new_email, "Admin Name"
|
29
|
-
@admin.email_address.should == new_email
|
29
|
+
@admin.email_address.should be == new_email
|
30
30
|
end
|
31
31
|
|
32
32
|
should "delete an admin" do
|