createsend 0.2.1 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile.lock +10 -12
- data/createsend.gemspec +3 -3
- data/lib/createsend.rb +4 -1
- data/lib/createsend/subscriber.rb +15 -0
- data/lib/createsend/version.rb +1 -1
- data/test/client_test.rb +1 -0
- data/test/fixtures/suppressionlist.json +5 -0
- data/test/helper.rb +1 -1
- data/test/list_test.rb +2 -2
- data/test/subscriber_test.rb +18 -0
- metadata +34 -37
data/Gemfile.lock
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
createsend (0.2.
|
5
|
-
hashie (~>
|
6
|
-
httparty (~> 0.
|
4
|
+
createsend (0.2.1)
|
5
|
+
hashie (~> 1.0)
|
6
|
+
httparty (~> 0.7)
|
7
7
|
json
|
8
8
|
|
9
9
|
GEM
|
@@ -11,14 +11,12 @@ GEM
|
|
11
11
|
specs:
|
12
12
|
crack (0.1.8)
|
13
13
|
fakeweb (1.3.0)
|
14
|
-
hashie (0.
|
15
|
-
httparty (0.
|
14
|
+
hashie (1.0.0)
|
15
|
+
httparty (0.7.4)
|
16
16
|
crack (= 0.1.8)
|
17
17
|
jnunemaker-matchy (0.4.0)
|
18
|
-
json (1.
|
19
|
-
mocha (0.9.
|
20
|
-
rake
|
21
|
-
rake (0.8.7)
|
18
|
+
json (1.5.1)
|
19
|
+
mocha (0.9.12)
|
22
20
|
shoulda (2.11.3)
|
23
21
|
|
24
22
|
PLATFORMS
|
@@ -27,9 +25,9 @@ PLATFORMS
|
|
27
25
|
DEPENDENCIES
|
28
26
|
createsend!
|
29
27
|
fakeweb (~> 1.3)
|
30
|
-
hashie (~>
|
31
|
-
httparty (~> 0.
|
32
|
-
jnunemaker-matchy (~> 0.4
|
28
|
+
hashie (~> 1.0)
|
29
|
+
httparty (~> 0.7)
|
30
|
+
jnunemaker-matchy (~> 0.4)
|
33
31
|
json
|
34
32
|
mocha (~> 0.9)
|
35
33
|
shoulda (~> 2.11)
|
data/createsend.gemspec
CHANGED
@@ -5,12 +5,12 @@ require File.expand_path('lib/createsend/version')
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.add_development_dependency('fakeweb', '~> 1.3')
|
8
|
-
s.add_development_dependency('jnunemaker-matchy', '~> 0.4
|
8
|
+
s.add_development_dependency('jnunemaker-matchy', '~> 0.4')
|
9
9
|
s.add_development_dependency('mocha', '~> 0.9')
|
10
10
|
s.add_development_dependency('shoulda', '~> 2.11')
|
11
11
|
s.add_runtime_dependency('json')
|
12
|
-
s.add_runtime_dependency('hashie', '~>
|
13
|
-
s.add_runtime_dependency('httparty', '~> 0.
|
12
|
+
s.add_runtime_dependency('hashie', '~> 1.0')
|
13
|
+
s.add_runtime_dependency('httparty', '~> 0.7')
|
14
14
|
s.name = "createsend"
|
15
15
|
s.author = "James Dennes"
|
16
16
|
s.description = %q{A library which implements the complete functionality of v3 of the createsend API.}
|
data/lib/createsend.rb
CHANGED
@@ -57,7 +57,10 @@ module CreateSend
|
|
57
57
|
class CreateSend
|
58
58
|
include HTTParty
|
59
59
|
|
60
|
-
headers({
|
60
|
+
headers({
|
61
|
+
'User-Agent' => "createsend-ruby-#{CreateSend::VERSION}",
|
62
|
+
'Content-Type' => 'application/json; charset=utf-8',
|
63
|
+
'Accept-Encoding' => 'gzip, deflate' })
|
61
64
|
base_uri CreateSendOptions['base_uri']
|
62
65
|
basic_auth CreateSendOptions['api_key'], 'x'
|
63
66
|
|
@@ -51,6 +51,21 @@ module CreateSend
|
|
51
51
|
Hashie::Mash.new(response)
|
52
52
|
end
|
53
53
|
|
54
|
+
# Updates any aspect of a subscriber, including email address, name, and
|
55
|
+
# custom field data if supplied.
|
56
|
+
def update(new_email_address, name, custom_fields, resubscribe)
|
57
|
+
options = {
|
58
|
+
:query => { :email => @email_address },
|
59
|
+
:body => {
|
60
|
+
:EmailAddress => new_email_address,
|
61
|
+
:Name => name,
|
62
|
+
:CustomFields => custom_fields,
|
63
|
+
:Resubscribe => resubscribe }.to_json }
|
64
|
+
CreateSend.put "/subscribers/#{@list_id}.json", options
|
65
|
+
# Update @email_address, so this object can continue to be used reliably
|
66
|
+
@email_address = new_email_address
|
67
|
+
end
|
68
|
+
|
54
69
|
# Unsubscribes this subscriber from the associated list.
|
55
70
|
def unsubscribe
|
56
71
|
options = { :body => {
|
data/lib/createsend/version.rb
CHANGED
data/test/client_test.rb
CHANGED
@@ -76,6 +76,7 @@ class ClientTest < Test::Unit::TestCase
|
|
76
76
|
res.TotalNumberOfRecords.should == 5
|
77
77
|
res.NumberOfPages.should == 1
|
78
78
|
res.Results.size.should == 5
|
79
|
+
res.Results.first.SuppressionReason.should == "Unsubscribed"
|
79
80
|
res.Results.first.EmailAddress.should == "example+1@example.com"
|
80
81
|
res.Results.first.Date.should == "2010-10-26 10:55:31"
|
81
82
|
res.Results.first.State.should == "Suppressed"
|
@@ -1,26 +1,31 @@
|
|
1
1
|
{
|
2
2
|
"Results": [
|
3
3
|
{
|
4
|
+
"SuppressionReason": "Unsubscribed",
|
4
5
|
"EmailAddress": "example+1@example.com",
|
5
6
|
"Date": "2010-10-26 10:55:31",
|
6
7
|
"State": "Suppressed"
|
7
8
|
},
|
8
9
|
{
|
10
|
+
"SuppressionReason": "Unsubscribed",
|
9
11
|
"EmailAddress": "example+2@example.com",
|
10
12
|
"Date": "2010-10-26 10:55:31",
|
11
13
|
"State": "Suppressed"
|
12
14
|
},
|
13
15
|
{
|
16
|
+
"SuppressionReason": "Unsubscribed",
|
14
17
|
"EmailAddress": "example+3@example.com",
|
15
18
|
"Date": "2010-10-26 10:55:31",
|
16
19
|
"State": "Suppressed"
|
17
20
|
},
|
18
21
|
{
|
22
|
+
"SuppressionReason": "Unsubscribed",
|
19
23
|
"EmailAddress": "subscriber@example.com",
|
20
24
|
"Date": "2010-10-25 13:11:04",
|
21
25
|
"State": "Suppressed"
|
22
26
|
},
|
23
27
|
{
|
28
|
+
"SuppressionReason": "Unsubscribed",
|
24
29
|
"EmailAddress": "subscriberone@example.com",
|
25
30
|
"Date": "2010-10-25 13:04:15",
|
26
31
|
"State": "Suppressed"
|
data/test/helper.rb
CHANGED
@@ -26,7 +26,7 @@ def stub_request(method, api_key, url, filename, status=nil)
|
|
26
26
|
options = {:body => ""}
|
27
27
|
options.merge!({:body => fixture_file(filename)}) if filename
|
28
28
|
options.merge!({:status => status}) if status
|
29
|
-
options.merge!(:content_type => "application/json")
|
29
|
+
options.merge!(:content_type => "application/json; charset=utf-8")
|
30
30
|
FakeWeb.register_uri(method, createsend_url(api_key, url), options)
|
31
31
|
end
|
32
32
|
|
data/test/list_test.rb
CHANGED
@@ -15,12 +15,12 @@ class ListTest < Test::Unit::TestCase
|
|
15
15
|
list_id = CreateSend::List.create @client_id, "List One", "", false, ""
|
16
16
|
list_id.should == "e3c5f034d68744f7881fdccf13c2daee"
|
17
17
|
end
|
18
|
-
|
18
|
+
|
19
19
|
should "update a list" do
|
20
20
|
stub_put(@api_key, "lists/#{@list.list_id}.json", nil)
|
21
21
|
@list.update "List One Renamed", "", false, ""
|
22
22
|
end
|
23
|
-
|
23
|
+
|
24
24
|
should "delete a list" do
|
25
25
|
stub_delete(@api_key, "lists/#{@list.list_id}.json", nil)
|
26
26
|
@list.delete
|
data/test/subscriber_test.rb
CHANGED
@@ -34,6 +34,24 @@ class SubscriberTest < Test::Unit::TestCase
|
|
34
34
|
email_address = CreateSend::Subscriber.add @list_id, "subscriber@example.com", "Subscriber", custom_fields, true
|
35
35
|
email_address.should == "subscriber@example.com"
|
36
36
|
end
|
37
|
+
|
38
|
+
should "add a subscriber with custom fields including multi-option fields" do
|
39
|
+
stub_post(@api_key, "subscribers/#{@list_id}.json", "add_subscriber.json")
|
40
|
+
custom_fields = [ { :Key => 'multioptionselectone', :Value => 'myoption' },
|
41
|
+
{ :Key => 'multioptionselectmany', :Value => 'firstoption' },
|
42
|
+
{ :Key => 'multioptionselectmany', :Value => 'secondoption' } ]
|
43
|
+
email_address = CreateSend::Subscriber.add @list_id, "subscriber@example.com", "Subscriber", custom_fields, true
|
44
|
+
email_address.should == "subscriber@example.com"
|
45
|
+
end
|
46
|
+
|
47
|
+
should "update a subscriber with custom fields" do
|
48
|
+
email = "subscriber@example.com"
|
49
|
+
new_email = "new_email_address@example.com"
|
50
|
+
stub_put(@api_key, "subscribers/#{@list_id}.json?email=#{CGI.escape(email)}", nil)
|
51
|
+
custom_fields = [ { :Key => 'website', :Value => 'http://example.com/' } ]
|
52
|
+
@subscriber.update new_email, "Subscriber", custom_fields, true
|
53
|
+
@subscriber.email_address.should == new_email
|
54
|
+
end
|
37
55
|
|
38
56
|
should "import many subscribers at once" do
|
39
57
|
stub_post(@api_key, "subscribers/#{@list_id}/import.json", "import_subscribers.json")
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: createsend
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
5
|
-
prerelease:
|
4
|
+
hash: 19
|
5
|
+
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
-
-
|
9
|
-
-
|
10
|
-
version: 0.
|
8
|
+
- 3
|
9
|
+
- 0
|
10
|
+
version: 0.3.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- James Dennes
|
@@ -15,10 +15,11 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-
|
18
|
+
date: 2011-04-18 00:00:00 +10:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
22
|
+
type: :development
|
22
23
|
requirement: &id001 !ruby/object:Gem::Requirement
|
23
24
|
none: false
|
24
25
|
requirements:
|
@@ -29,27 +30,26 @@ dependencies:
|
|
29
30
|
- 1
|
30
31
|
- 3
|
31
32
|
version: "1.3"
|
32
|
-
type: :development
|
33
|
-
prerelease: false
|
34
|
-
name: fakeweb
|
35
33
|
version_requirements: *id001
|
34
|
+
name: fakeweb
|
35
|
+
prerelease: false
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
|
+
type: :development
|
37
38
|
requirement: &id002 !ruby/object:Gem::Requirement
|
38
39
|
none: false
|
39
40
|
requirements:
|
40
41
|
- - ~>
|
41
42
|
- !ruby/object:Gem::Version
|
42
|
-
hash:
|
43
|
+
hash: 3
|
43
44
|
segments:
|
44
45
|
- 0
|
45
46
|
- 4
|
46
|
-
|
47
|
-
version: 0.4.0
|
48
|
-
type: :development
|
49
|
-
prerelease: false
|
50
|
-
name: jnunemaker-matchy
|
47
|
+
version: "0.4"
|
51
48
|
version_requirements: *id002
|
49
|
+
name: jnunemaker-matchy
|
50
|
+
prerelease: false
|
52
51
|
- !ruby/object:Gem::Dependency
|
52
|
+
type: :development
|
53
53
|
requirement: &id003 !ruby/object:Gem::Requirement
|
54
54
|
none: false
|
55
55
|
requirements:
|
@@ -60,11 +60,11 @@ dependencies:
|
|
60
60
|
- 0
|
61
61
|
- 9
|
62
62
|
version: "0.9"
|
63
|
-
type: :development
|
64
|
-
prerelease: false
|
65
|
-
name: mocha
|
66
63
|
version_requirements: *id003
|
64
|
+
name: mocha
|
65
|
+
prerelease: false
|
67
66
|
- !ruby/object:Gem::Dependency
|
67
|
+
type: :development
|
68
68
|
requirement: &id004 !ruby/object:Gem::Requirement
|
69
69
|
none: false
|
70
70
|
requirements:
|
@@ -75,11 +75,11 @@ dependencies:
|
|
75
75
|
- 2
|
76
76
|
- 11
|
77
77
|
version: "2.11"
|
78
|
-
type: :development
|
79
|
-
prerelease: false
|
80
|
-
name: shoulda
|
81
78
|
version_requirements: *id004
|
79
|
+
name: shoulda
|
80
|
+
prerelease: false
|
82
81
|
- !ruby/object:Gem::Dependency
|
82
|
+
type: :runtime
|
83
83
|
requirement: &id005 !ruby/object:Gem::Requirement
|
84
84
|
none: false
|
85
85
|
requirements:
|
@@ -89,11 +89,11 @@ dependencies:
|
|
89
89
|
segments:
|
90
90
|
- 0
|
91
91
|
version: "0"
|
92
|
-
type: :runtime
|
93
|
-
prerelease: false
|
94
|
-
name: json
|
95
92
|
version_requirements: *id005
|
93
|
+
name: json
|
94
|
+
prerelease: false
|
96
95
|
- !ruby/object:Gem::Dependency
|
96
|
+
type: :runtime
|
97
97
|
requirement: &id006 !ruby/object:Gem::Requirement
|
98
98
|
none: false
|
99
99
|
requirements:
|
@@ -101,15 +101,14 @@ dependencies:
|
|
101
101
|
- !ruby/object:Gem::Version
|
102
102
|
hash: 15
|
103
103
|
segments:
|
104
|
+
- 1
|
104
105
|
- 0
|
105
|
-
|
106
|
-
- 0
|
107
|
-
version: 0.4.0
|
108
|
-
type: :runtime
|
109
|
-
prerelease: false
|
110
|
-
name: hashie
|
106
|
+
version: "1.0"
|
111
107
|
version_requirements: *id006
|
108
|
+
name: hashie
|
109
|
+
prerelease: false
|
112
110
|
- !ruby/object:Gem::Dependency
|
111
|
+
type: :runtime
|
113
112
|
requirement: &id007 !ruby/object:Gem::Requirement
|
114
113
|
none: false
|
115
114
|
requirements:
|
@@ -118,13 +117,11 @@ dependencies:
|
|
118
117
|
hash: 5
|
119
118
|
segments:
|
120
119
|
- 0
|
121
|
-
-
|
122
|
-
|
123
|
-
version: 0.6.1
|
124
|
-
type: :runtime
|
125
|
-
prerelease: false
|
126
|
-
name: httparty
|
120
|
+
- 7
|
121
|
+
version: "0.7"
|
127
122
|
version_requirements: *id007
|
123
|
+
name: httparty
|
124
|
+
prerelease: false
|
128
125
|
description: A library which implements the complete functionality of v3 of the createsend API.
|
129
126
|
email:
|
130
127
|
- jdennes@gmail.com
|
@@ -233,7 +230,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
233
230
|
requirements: []
|
234
231
|
|
235
232
|
rubyforge_project:
|
236
|
-
rubygems_version: 1.
|
233
|
+
rubygems_version: 1.4.2
|
237
234
|
signing_key:
|
238
235
|
specification_version: 3
|
239
236
|
summary: A library which implements the complete functionality of v3 of the createsend API.
|