createsend 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +7 -0
- data/Gemfile +3 -0
- data/README.md +3 -0
- data/Rakefile +23 -0
- data/config.example.yaml +2 -0
- data/createsend.gemspec +26 -0
- data/lib/campaign.rb +90 -0
- data/lib/client.rb +117 -0
- data/lib/createsend.rb +103 -0
- data/lib/list.rb +99 -0
- data/lib/subscriber.rb +49 -0
- data/lib/template.rb +38 -0
- data/test/campaign_test.rb +98 -0
- data/test/client_test.rb +107 -0
- data/test/createsend_test.rb +96 -0
- data/test/fixtures/active_subscribers.json +67 -0
- data/test/fixtures/add_subscriber.json +1 -0
- data/test/fixtures/apikey.json +3 -0
- data/test/fixtures/bounced_subscribers.json +9 -0
- data/test/fixtures/campaign_bounces.json +16 -0
- data/test/fixtures/campaign_clicks.json +23 -0
- data/test/fixtures/campaign_lists.json +10 -0
- data/test/fixtures/campaign_opens.json +32 -0
- data/test/fixtures/campaign_summary.json +9 -0
- data/test/fixtures/campaign_unsubscribes.json +9 -0
- data/test/fixtures/campaigns.json +18 -0
- data/test/fixtures/client_details.json +25 -0
- data/test/fixtures/clients.json +10 -0
- data/test/fixtures/countries.json +247 -0
- data/test/fixtures/create_campaign.json +1 -0
- data/test/fixtures/create_client.json +1 -0
- data/test/fixtures/create_custom_field.json +1 -0
- data/test/fixtures/create_list.json +1 -0
- data/test/fixtures/create_template.json +1 -0
- data/test/fixtures/custom_api_error.json +4 -0
- data/test/fixtures/custom_fields.json +20 -0
- data/test/fixtures/drafts.json +14 -0
- data/test/fixtures/import_subscribers.json +7 -0
- data/test/fixtures/list_details.json +7 -0
- data/test/fixtures/list_stats.json +26 -0
- data/test/fixtures/lists.json +10 -0
- data/test/fixtures/segments.json +10 -0
- data/test/fixtures/subscriber_details.json +20 -0
- data/test/fixtures/subscriber_history.json +45 -0
- data/test/fixtures/suppressionlist.json +12 -0
- data/test/fixtures/systemdate.json +3 -0
- data/test/fixtures/template_details.json +6 -0
- data/test/fixtures/templates.json +14 -0
- data/test/fixtures/timezones.json +99 -0
- data/test/fixtures/unsubscribed_subscribers.json +21 -0
- data/test/helper.rb +36 -0
- data/test/list_test.rb +107 -0
- data/test/subscriber_test.rb +73 -0
- data/test/template_test.rb +38 -0
- metadata +256 -0
@@ -0,0 +1,73 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/helper'
|
2
|
+
|
3
|
+
class SubscriberTest < Test::Unit::TestCase
|
4
|
+
context "when an api caller is authenticated" do
|
5
|
+
setup do
|
6
|
+
@api_key = '123123123123123123123'
|
7
|
+
CreateSend.api_key @api_key
|
8
|
+
@list_id = "d98h2938d9283d982u3d98u88"
|
9
|
+
@subscriber = Subscriber.new @list_id, "subscriber@example.com"
|
10
|
+
end
|
11
|
+
|
12
|
+
should "get a subscriber by list id and email address" do
|
13
|
+
email = "subscriber@example.com"
|
14
|
+
stub_get(@api_key, "subscribers/#{@list_id}.json?email=#{CGI.escape(email)}", "subscriber_details.json")
|
15
|
+
subscriber = Subscriber.get @list_id, email
|
16
|
+
subscriber.EmailAddress.should == email
|
17
|
+
subscriber.Name.should == "Subscriber One"
|
18
|
+
subscriber.Date.should == "2010-10-25 10:28:00"
|
19
|
+
subscriber.State.should == "Active"
|
20
|
+
subscriber.CustomFields.size.should == 3
|
21
|
+
subscriber.CustomFields.first.Key.should == 'website'
|
22
|
+
subscriber.CustomFields.first.Value.should == 'http://example.com'
|
23
|
+
end
|
24
|
+
|
25
|
+
should "add a subscriber without custom fields" do
|
26
|
+
stub_post(@api_key, "subscribers/#{@list_id}.json", "add_subscriber.json")
|
27
|
+
email_address = Subscriber.add @list_id, "subscriber@example.com", "Subscriber", [], true
|
28
|
+
email_address.should == "subscriber@example.com"
|
29
|
+
end
|
30
|
+
|
31
|
+
should "add a subscriber with custom fields" do
|
32
|
+
stub_post(@api_key, "subscribers/#{@list_id}.json", "add_subscriber.json")
|
33
|
+
custom_fields = [ { :Key => 'website', :Value => 'http://example.com/' } ]
|
34
|
+
email_address = Subscriber.add @list_id, "subscriber@example.com", "Subscriber", custom_fields, true
|
35
|
+
email_address.should == "subscriber@example.com"
|
36
|
+
end
|
37
|
+
|
38
|
+
should "import many subscribers at once" do
|
39
|
+
stub_post(@api_key, "subscribers/#{@list_id}/import.json", "import_subscribers.json")
|
40
|
+
subscribers = [
|
41
|
+
{ :EmailAddress => "example+1@example.com", :Name => "Example One" },
|
42
|
+
{ :EmailAddress => "example+2@example.com", :Name => "Example Two" },
|
43
|
+
{ :EmailAddress => "example+3@example.com", :Name => "Example Three" },
|
44
|
+
]
|
45
|
+
import_result = Subscriber.import @list_id, subscribers, true
|
46
|
+
import_result.FailureDetails.size.should == 0
|
47
|
+
import_result.TotalUniqueEmailsSubmitted.should == 3
|
48
|
+
import_result.TotalExistingSubscribers.should == 0
|
49
|
+
import_result.TotalNewSubscribers.should == 3
|
50
|
+
import_result.DuplicateEmailsInSubmission.size.should == 0
|
51
|
+
end
|
52
|
+
|
53
|
+
should "unsubscribe a subscriber" do
|
54
|
+
stub_post(@api_key, "subscribers/#{@subscriber.list_id}/unsubscribe.json", nil)
|
55
|
+
@subscriber.unsubscribe
|
56
|
+
end
|
57
|
+
|
58
|
+
should "get a subscriber's history" do
|
59
|
+
stub_get(@api_key, "subscribers/#{@subscriber.list_id}/history.json?email=#{CGI.escape(@subscriber.email_address)}", "subscriber_history.json")
|
60
|
+
history = @subscriber.history
|
61
|
+
history.size.should == 1
|
62
|
+
history.first.Name.should == "Campaign One"
|
63
|
+
history.first.Type.should == "Campaign"
|
64
|
+
history.first.ID.should == "fc0ce7105baeaf97f47c99be31d02a91"
|
65
|
+
history.first.Actions.size.should == 6
|
66
|
+
history.first.Actions.first.Event.should == "Open"
|
67
|
+
history.first.Actions.first.Date.should == "2010-10-12 13:18:00"
|
68
|
+
history.first.Actions.first.IPAddress.should == "192.168.126.87"
|
69
|
+
history.first.Actions.first.Detail.should == ""
|
70
|
+
end
|
71
|
+
|
72
|
+
end
|
73
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/helper'
|
2
|
+
|
3
|
+
class TemplateTest < Test::Unit::TestCase
|
4
|
+
context "when an api caller is authenticated" do
|
5
|
+
setup do
|
6
|
+
@api_key = '123123123123123123123'
|
7
|
+
CreateSend.api_key @api_key
|
8
|
+
@template = Template.new(:template_id => '98y2e98y289dh89h938389')
|
9
|
+
end
|
10
|
+
|
11
|
+
should "create a template" do
|
12
|
+
client_id = '87y8d7qyw8d7yq8w7ydwqwd'
|
13
|
+
stub_post(@api_key, "templates/#{client_id}.json", "create_template.json")
|
14
|
+
template_id = Template.create client_id, "Template One", "http://templates.org/index.html",
|
15
|
+
"http://templates.org/files.zip", "http://templates.org/screenshot.jpg"
|
16
|
+
template_id.should == "98y2e98y289dh89h938389"
|
17
|
+
end
|
18
|
+
|
19
|
+
should "get details of a template" do
|
20
|
+
stub_get(@api_key, "templates/#{@template.template_id}.json", "template_details.json")
|
21
|
+
t = @template.details
|
22
|
+
t.TemplateID.should == "98y2e98y289dh89h938389"
|
23
|
+
t.Name.should == "Template One"
|
24
|
+
t.PreviewURL.should == "http://preview.createsend.com/createsend/templates/previewTemplate.aspx?ID=01AF532CD8889B33&d=r&c=E816F55BFAD1A753"
|
25
|
+
t.ScreenshotURL.should == "http://preview.createsend.com/ts/r/14/833/263/14833263.jpg?0318092600"
|
26
|
+
end
|
27
|
+
|
28
|
+
should "update a template" do
|
29
|
+
stub_put(@api_key, "templates/#{@template.template_id}.json", nil)
|
30
|
+
@template.update "Template One Updated", "http://templates.org/index.html", "http://templates.org/files.zip", "http://templates.org/screenshot.jpg"
|
31
|
+
end
|
32
|
+
|
33
|
+
should "delete a template" do
|
34
|
+
stub_delete(@api_key, "templates/#{@template.template_id}.json", nil)
|
35
|
+
@template.delete
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
metadata
ADDED
@@ -0,0 +1,256 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: createsend
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: 29
|
5
|
+
prerelease: false
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 0
|
9
|
+
- 1
|
10
|
+
version: 0.0.1
|
11
|
+
platform: ruby
|
12
|
+
authors:
|
13
|
+
- James Dennes
|
14
|
+
autorequire:
|
15
|
+
bindir: bin
|
16
|
+
cert_chain: []
|
17
|
+
|
18
|
+
date: 2010-10-27 00:00:00 +11:00
|
19
|
+
default_executable:
|
20
|
+
dependencies:
|
21
|
+
- !ruby/object:Gem::Dependency
|
22
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
23
|
+
none: false
|
24
|
+
requirements:
|
25
|
+
- - ~>
|
26
|
+
- !ruby/object:Gem::Version
|
27
|
+
hash: 9
|
28
|
+
segments:
|
29
|
+
- 1
|
30
|
+
- 3
|
31
|
+
version: "1.3"
|
32
|
+
type: :development
|
33
|
+
prerelease: false
|
34
|
+
name: fakeweb
|
35
|
+
version_requirements: *id001
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
38
|
+
none: false
|
39
|
+
requirements:
|
40
|
+
- - ~>
|
41
|
+
- !ruby/object:Gem::Version
|
42
|
+
hash: 15
|
43
|
+
segments:
|
44
|
+
- 0
|
45
|
+
- 4
|
46
|
+
- 0
|
47
|
+
version: 0.4.0
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
name: jnunemaker-matchy
|
51
|
+
version_requirements: *id002
|
52
|
+
- !ruby/object:Gem::Dependency
|
53
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
54
|
+
none: false
|
55
|
+
requirements:
|
56
|
+
- - ~>
|
57
|
+
- !ruby/object:Gem::Version
|
58
|
+
hash: 25
|
59
|
+
segments:
|
60
|
+
- 0
|
61
|
+
- 9
|
62
|
+
version: "0.9"
|
63
|
+
type: :development
|
64
|
+
prerelease: false
|
65
|
+
name: mocha
|
66
|
+
version_requirements: *id003
|
67
|
+
- !ruby/object:Gem::Dependency
|
68
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
69
|
+
none: false
|
70
|
+
requirements:
|
71
|
+
- - ~>
|
72
|
+
- !ruby/object:Gem::Version
|
73
|
+
hash: 21
|
74
|
+
segments:
|
75
|
+
- 2
|
76
|
+
- 11
|
77
|
+
version: "2.11"
|
78
|
+
type: :development
|
79
|
+
prerelease: false
|
80
|
+
name: shoulda
|
81
|
+
version_requirements: *id004
|
82
|
+
- !ruby/object:Gem::Dependency
|
83
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
84
|
+
none: false
|
85
|
+
requirements:
|
86
|
+
- - ~>
|
87
|
+
- !ruby/object:Gem::Version
|
88
|
+
hash: 15
|
89
|
+
segments:
|
90
|
+
- 0
|
91
|
+
- 4
|
92
|
+
- 0
|
93
|
+
version: 0.4.0
|
94
|
+
type: :runtime
|
95
|
+
prerelease: false
|
96
|
+
name: hashie
|
97
|
+
version_requirements: *id005
|
98
|
+
- !ruby/object:Gem::Dependency
|
99
|
+
requirement: &id006 !ruby/object:Gem::Requirement
|
100
|
+
none: false
|
101
|
+
requirements:
|
102
|
+
- - ~>
|
103
|
+
- !ruby/object:Gem::Version
|
104
|
+
hash: 5
|
105
|
+
segments:
|
106
|
+
- 0
|
107
|
+
- 6
|
108
|
+
- 1
|
109
|
+
version: 0.6.1
|
110
|
+
type: :runtime
|
111
|
+
prerelease: false
|
112
|
+
name: httparty
|
113
|
+
version_requirements: *id006
|
114
|
+
description: A wrapper for the CreateSend API v3
|
115
|
+
email:
|
116
|
+
- jdennes@gmail.com
|
117
|
+
executables: []
|
118
|
+
|
119
|
+
extensions: []
|
120
|
+
|
121
|
+
extra_rdoc_files: []
|
122
|
+
|
123
|
+
files:
|
124
|
+
- .gitignore
|
125
|
+
- Gemfile
|
126
|
+
- README.md
|
127
|
+
- Rakefile
|
128
|
+
- config.example.yaml
|
129
|
+
- createsend.gemspec
|
130
|
+
- lib/campaign.rb
|
131
|
+
- lib/client.rb
|
132
|
+
- lib/createsend.rb
|
133
|
+
- lib/list.rb
|
134
|
+
- lib/subscriber.rb
|
135
|
+
- lib/template.rb
|
136
|
+
- test/campaign_test.rb
|
137
|
+
- test/client_test.rb
|
138
|
+
- test/createsend_test.rb
|
139
|
+
- test/fixtures/active_subscribers.json
|
140
|
+
- test/fixtures/add_subscriber.json
|
141
|
+
- test/fixtures/apikey.json
|
142
|
+
- test/fixtures/bounced_subscribers.json
|
143
|
+
- test/fixtures/campaign_bounces.json
|
144
|
+
- test/fixtures/campaign_clicks.json
|
145
|
+
- test/fixtures/campaign_lists.json
|
146
|
+
- test/fixtures/campaign_opens.json
|
147
|
+
- test/fixtures/campaign_summary.json
|
148
|
+
- test/fixtures/campaign_unsubscribes.json
|
149
|
+
- test/fixtures/campaigns.json
|
150
|
+
- test/fixtures/client_details.json
|
151
|
+
- test/fixtures/clients.json
|
152
|
+
- test/fixtures/countries.json
|
153
|
+
- test/fixtures/create_campaign.json
|
154
|
+
- test/fixtures/create_client.json
|
155
|
+
- test/fixtures/create_custom_field.json
|
156
|
+
- test/fixtures/create_list.json
|
157
|
+
- test/fixtures/create_template.json
|
158
|
+
- test/fixtures/custom_api_error.json
|
159
|
+
- test/fixtures/custom_fields.json
|
160
|
+
- test/fixtures/drafts.json
|
161
|
+
- test/fixtures/import_subscribers.json
|
162
|
+
- test/fixtures/list_details.json
|
163
|
+
- test/fixtures/list_stats.json
|
164
|
+
- test/fixtures/lists.json
|
165
|
+
- test/fixtures/segments.json
|
166
|
+
- test/fixtures/subscriber_details.json
|
167
|
+
- test/fixtures/subscriber_history.json
|
168
|
+
- test/fixtures/suppressionlist.json
|
169
|
+
- test/fixtures/systemdate.json
|
170
|
+
- test/fixtures/template_details.json
|
171
|
+
- test/fixtures/templates.json
|
172
|
+
- test/fixtures/timezones.json
|
173
|
+
- test/fixtures/unsubscribed_subscribers.json
|
174
|
+
- test/helper.rb
|
175
|
+
- test/list_test.rb
|
176
|
+
- test/subscriber_test.rb
|
177
|
+
- test/template_test.rb
|
178
|
+
has_rdoc: true
|
179
|
+
homepage: http://github.com/campaignmonitor/createsend-ruby/
|
180
|
+
licenses: []
|
181
|
+
|
182
|
+
post_install_message:
|
183
|
+
rdoc_options: []
|
184
|
+
|
185
|
+
require_paths:
|
186
|
+
- lib
|
187
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
188
|
+
none: false
|
189
|
+
requirements:
|
190
|
+
- - ">="
|
191
|
+
- !ruby/object:Gem::Version
|
192
|
+
hash: 3
|
193
|
+
segments:
|
194
|
+
- 0
|
195
|
+
version: "0"
|
196
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
197
|
+
none: false
|
198
|
+
requirements:
|
199
|
+
- - ">="
|
200
|
+
- !ruby/object:Gem::Version
|
201
|
+
hash: 23
|
202
|
+
segments:
|
203
|
+
- 1
|
204
|
+
- 3
|
205
|
+
- 6
|
206
|
+
version: 1.3.6
|
207
|
+
requirements: []
|
208
|
+
|
209
|
+
rubyforge_project:
|
210
|
+
rubygems_version: 1.3.7
|
211
|
+
signing_key:
|
212
|
+
specification_version: 3
|
213
|
+
summary: Wrapper for the CreateSend API v3
|
214
|
+
test_files:
|
215
|
+
- test/campaign_test.rb
|
216
|
+
- test/client_test.rb
|
217
|
+
- test/createsend_test.rb
|
218
|
+
- test/fixtures/active_subscribers.json
|
219
|
+
- test/fixtures/add_subscriber.json
|
220
|
+
- test/fixtures/apikey.json
|
221
|
+
- test/fixtures/bounced_subscribers.json
|
222
|
+
- test/fixtures/campaign_bounces.json
|
223
|
+
- test/fixtures/campaign_clicks.json
|
224
|
+
- test/fixtures/campaign_lists.json
|
225
|
+
- test/fixtures/campaign_opens.json
|
226
|
+
- test/fixtures/campaign_summary.json
|
227
|
+
- test/fixtures/campaign_unsubscribes.json
|
228
|
+
- test/fixtures/campaigns.json
|
229
|
+
- test/fixtures/client_details.json
|
230
|
+
- test/fixtures/clients.json
|
231
|
+
- test/fixtures/countries.json
|
232
|
+
- test/fixtures/create_campaign.json
|
233
|
+
- test/fixtures/create_client.json
|
234
|
+
- test/fixtures/create_custom_field.json
|
235
|
+
- test/fixtures/create_list.json
|
236
|
+
- test/fixtures/create_template.json
|
237
|
+
- test/fixtures/custom_api_error.json
|
238
|
+
- test/fixtures/custom_fields.json
|
239
|
+
- test/fixtures/drafts.json
|
240
|
+
- test/fixtures/import_subscribers.json
|
241
|
+
- test/fixtures/list_details.json
|
242
|
+
- test/fixtures/list_stats.json
|
243
|
+
- test/fixtures/lists.json
|
244
|
+
- test/fixtures/segments.json
|
245
|
+
- test/fixtures/subscriber_details.json
|
246
|
+
- test/fixtures/subscriber_history.json
|
247
|
+
- test/fixtures/suppressionlist.json
|
248
|
+
- test/fixtures/systemdate.json
|
249
|
+
- test/fixtures/template_details.json
|
250
|
+
- test/fixtures/templates.json
|
251
|
+
- test/fixtures/timezones.json
|
252
|
+
- test/fixtures/unsubscribed_subscribers.json
|
253
|
+
- test/helper.rb
|
254
|
+
- test/list_test.rb
|
255
|
+
- test/subscriber_test.rb
|
256
|
+
- test/template_test.rb
|