createsend 0.2.1 → 0.3.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/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.
|