createsend 3.1.0 → 3.1.1
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile.lock +1 -1
- data/HISTORY.md +20 -16
- data/README.md +1 -1
- data/lib/createsend/createsend.rb +1 -1
- data/lib/createsend/version.rb +1 -1
- data/test/createsend_test.rb +9 -9
- metadata +2 -5
data/Gemfile.lock
CHANGED
data/HISTORY.md
CHANGED
@@ -1,6 +1,10 @@
|
|
1
1
|
# createsend-ruby history
|
2
2
|
|
3
|
-
## v3.1.
|
3
|
+
## v3.1.1 - 10 Apr, 2013
|
4
|
+
|
5
|
+
* Fixed a bug occurring sometimes when refreshing OAuth access tokens, because of a URL encoding issue.
|
6
|
+
|
7
|
+
## v3.1.0 - 28 Mar, 2013
|
4
8
|
|
5
9
|
* Added `CreateSend::CreateSend.refresh_access_token` to allow easier refreshing of access tokens when using class methods.
|
6
10
|
|
@@ -21,7 +25,7 @@
|
|
21
25
|
|
22
26
|
* Added `CreateSend::InvalidOAuthToken` and `CreateSend::RevokedOAuthToken` exceptions to make handling of OAuth exceptions in user code easier.
|
23
27
|
|
24
|
-
## v3.0.0 - 25 Mar, 2013
|
28
|
+
## v3.0.0 - 25 Mar, 2013
|
25
29
|
|
26
30
|
* Added support for authenticating using OAuth. See the [README](README.md#authenticating) for full usage instructions.
|
27
31
|
* Refactored authentication so that it is _always_ done at the instance level. This introduces some breaking changes, which are clearly explained below.
|
@@ -75,11 +79,11 @@
|
|
75
79
|
sub = CreateSend::Subscriber.add auth, "list id", "dave@example.com", "Dave", [], true
|
76
80
|
```
|
77
81
|
|
78
|
-
## v2.5.1 - 4 Feb, 2013
|
82
|
+
## v2.5.1 - 4 Feb, 2013
|
79
83
|
|
80
84
|
* Updated dependencies in gemspec. Removed cane as a development dependency.
|
81
85
|
|
82
|
-
## v2.5.0 - 11 Dec, 2012
|
86
|
+
## v2.5.0 - 11 Dec, 2012
|
83
87
|
|
84
88
|
* Added support for including from name, from email, and reply to email in drafts, scheduled, and sent campaigns.
|
85
89
|
* Added support for campaign text version urls.
|
@@ -87,7 +91,7 @@
|
|
87
91
|
* Added support for getting account billing details as well as client credits.
|
88
92
|
* Made all date fields optional when getting paged results.
|
89
93
|
|
90
|
-
## v2.4.0 - 5 Nov, 2012
|
94
|
+
## v2.4.0 - 5 Nov, 2012
|
91
95
|
|
92
96
|
* Added CreateSend::Campaign#email_client_usage.
|
93
97
|
* Added support for ReadsEmailWith field on subscriber objects.
|
@@ -102,24 +106,24 @@ fields.
|
|
102
106
|
* Added documentation explaining that text_url may now be nil or an empty
|
103
107
|
string when creating a campaign.
|
104
108
|
|
105
|
-
## v2.3.0 - 10 Oct, 2012
|
109
|
+
## v2.3.0 - 10 Oct, 2012
|
106
110
|
|
107
111
|
* Added support for creating campaigns from templates.
|
108
112
|
* Added support for unsuppressing an email address.
|
109
113
|
* Improved documentation and tests for getting active subscribers. Clearly
|
110
114
|
documented the data structure for multi option multi select fields.
|
111
115
|
|
112
|
-
## v2.2.0 - 17 Sep, 2012
|
116
|
+
## v2.2.0 - 17 Sep, 2012
|
113
117
|
|
114
118
|
* Added WorldviewURL field to campaign summary response.
|
115
119
|
* Added Latitude, Longitude, City, Region, CountryCode, and CountryName fields
|
116
120
|
to campaign opens and clicks response.
|
117
121
|
|
118
|
-
## v2.1.0 - 30 Aug, 2012
|
122
|
+
## v2.1.0 - 30 Aug, 2012
|
119
123
|
|
120
124
|
* Added support for basic / unlimited pricing.
|
121
125
|
|
122
|
-
## v2.0.0 - 22 Aug, 2012
|
126
|
+
## v2.0.0 - 22 Aug, 2012
|
123
127
|
|
124
128
|
* Added support for UnsubscribeSetting field when creating, updating and
|
125
129
|
getting list details.
|
@@ -130,27 +134,27 @@ specific email address belongs.
|
|
130
134
|
* Removed deprecated warnings and disallowed calls to be made in a deprecated
|
131
135
|
manner.
|
132
136
|
|
133
|
-
## v1.1.1 - 24 Jul, 2012
|
137
|
+
## v1.1.1 - 24 Jul, 2012
|
134
138
|
|
135
139
|
* Added support for specifying whether subscription-based autoresponders
|
136
140
|
should be restarted when adding or updating subscribers.
|
137
141
|
|
138
|
-
## v1.1.0 - 11 Jul, 2012
|
142
|
+
## v1.1.0 - 11 Jul, 2012
|
139
143
|
|
140
144
|
* Added support for newly released team management functionality.
|
141
145
|
|
142
|
-
## v1.0.4 - 4 May, 2012
|
146
|
+
## v1.0.4 - 4 May, 2012
|
143
147
|
|
144
148
|
* Added Travis CI support.
|
145
149
|
* Added Gemnasium support.
|
146
150
|
* Fixes to usage of Shoulda and Hashie libraries.
|
147
151
|
|
148
|
-
## v1.0.3 - 3 Dec, 2011
|
152
|
+
## v1.0.3 - 3 Dec, 2011
|
149
153
|
|
150
154
|
* Fixes to support Ruby 1.9.* (both the library as well as the rake tasks).
|
151
155
|
* Fixed the User-Agent header so that it now uses the correct module VERSION.
|
152
156
|
|
153
|
-
## v1.0.2 - 31 Oct, 2011
|
157
|
+
## v1.0.2 - 31 Oct, 2011
|
154
158
|
|
155
159
|
* Added support for deleting a subscriber.
|
156
160
|
* Added support for specifying a 'clear' field when updating or importing
|
@@ -161,10 +165,10 @@ subscribers.
|
|
161
165
|
* Added support for including more social sharing stats in campaign summary.
|
162
166
|
* Added support for unscheduling a campaign.
|
163
167
|
|
164
|
-
## v1.0.1 - 25 Oct, 2011
|
168
|
+
## v1.0.1 - 25 Oct, 2011
|
165
169
|
|
166
170
|
* Remove CreateSendOptions and remove usage of yaml config file.
|
167
171
|
|
168
|
-
## v1.0.0 - 26 Sep, 2011
|
172
|
+
## v1.0.0 - 26 Sep, 2011
|
169
173
|
|
170
174
|
* Initial release which supports current Campaign Monitor API.
|
data/README.md
CHANGED
@@ -189,7 +189,7 @@ Error Code: 304
|
|
189
189
|
Error Message: Campaign Subject Required
|
190
190
|
```
|
191
191
|
|
192
|
-
|
192
|
+
## Expected input and output
|
193
193
|
The best way of finding out the expected input and output of a particular method in a particular class is to use the unit tests as a reference.
|
194
194
|
|
195
195
|
For example, if you wanted to find out how to call the CreateSend::Subscriber.add method, you would look at the file test/subscriber_test.rb
|
@@ -77,7 +77,7 @@ module CreateSend
|
|
77
77
|
# Returns a new access token, 'expires in' value, and refresh token.
|
78
78
|
def self.refresh_access_token(refresh_token)
|
79
79
|
options = {
|
80
|
-
:body => "grant_type=refresh_token&refresh_token=#{refresh_token}" }
|
80
|
+
:body => "grant_type=refresh_token&refresh_token=#{CGI.escape(refresh_token)}" }
|
81
81
|
response = HTTParty.post(@@oauth_token_uri, options)
|
82
82
|
if response.has_key? 'error' and response.has_key? 'error_description'
|
83
83
|
err = "Error refreshing access token: "
|
data/lib/createsend/version.rb
CHANGED
data/test/createsend_test.rb
CHANGED
@@ -73,23 +73,23 @@ class CreateSendTest < Test::Unit::TestCase
|
|
73
73
|
Exception, 'Error exchanging code for access token: invalid_grant - Specified code was invalid or expired')
|
74
74
|
FakeWeb.last_request.body.should == "grant_type=authorization_code&client_id=8998879&client_secret=iou0q9wud0q9wd0q9wid0q9iwd0q9wid0q9wdqwd&redirect_uri=http%3A%2F%2Fexample.com%2Fauth&code=invalidcode"
|
75
75
|
end
|
76
|
-
|
76
|
+
|
77
77
|
should "refresh an access token given a refresh token" do
|
78
|
-
refresh_token = '
|
78
|
+
refresh_token = 'ASP95S4aR+9KsgfHB0dapTYxNA=='
|
79
79
|
options = {
|
80
80
|
:body => fixture_file("refresh_oauth_token.json"),
|
81
81
|
:content_type => "application/json; charset=utf-8" }
|
82
82
|
FakeWeb.register_uri(:post, "https://api.createsend.com/oauth/token", options)
|
83
83
|
new_access_token, new_expires_in, new_refresh_token = CreateSend::CreateSend.refresh_access_token refresh_token
|
84
84
|
|
85
|
-
FakeWeb.last_request.body.should == "grant_type=refresh_token&refresh_token=#{refresh_token}"
|
85
|
+
FakeWeb.last_request.body.should == "grant_type=refresh_token&refresh_token=#{CGI.escape(refresh_token)}"
|
86
86
|
new_access_token.should == "SlAV32hkKG2e12e"
|
87
87
|
new_expires_in.should == 1209600
|
88
88
|
new_refresh_token.should == "tGzv3JOkF0XG5Qx2TlKWIA"
|
89
89
|
end
|
90
90
|
|
91
91
|
should "raise an error when an attempt to refresh an access token fails" do
|
92
|
-
refresh_token = '
|
92
|
+
refresh_token = 'ASP95S4aR+9KsgfHB0dapTYxNA=='
|
93
93
|
options = {
|
94
94
|
:body => fixture_file("oauth_refresh_token_error.json"),
|
95
95
|
:content_type => "application/json; charset=utf-8" }
|
@@ -97,7 +97,7 @@ class CreateSendTest < Test::Unit::TestCase
|
|
97
97
|
lambda { access_token, expires_in, refresh_token = CreateSend::CreateSend.refresh_access_token(
|
98
98
|
refresh_token) }.should raise_error(
|
99
99
|
Exception, 'Error refreshing access token: invalid_grant - Specified refresh_token was invalid or expired')
|
100
|
-
FakeWeb.last_request.body.should == "grant_type=refresh_token&refresh_token=#{refresh_token}"
|
100
|
+
FakeWeb.last_request.body.should == "grant_type=refresh_token&refresh_token=#{CGI.escape(refresh_token)}"
|
101
101
|
end
|
102
102
|
|
103
103
|
should "get a person's api key" do
|
@@ -117,8 +117,8 @@ class CreateSendTest < Test::Unit::TestCase
|
|
117
117
|
|
118
118
|
context "when an api caller is authenticated using oauth" do
|
119
119
|
setup do
|
120
|
-
@access_token = "
|
121
|
-
@refresh_token = "
|
120
|
+
@access_token = "ASP95S4aR+9KsgfHB0dapTYxNA=="
|
121
|
+
@refresh_token = "5S4aASP9R+9KsgfHB0dapTYxNA=="
|
122
122
|
@auth = {
|
123
123
|
:access_token => @access_token,
|
124
124
|
:refresh_token => @refresh_token
|
@@ -133,7 +133,7 @@ class CreateSendTest < Test::Unit::TestCase
|
|
133
133
|
cs = CreateSend::CreateSend.new @auth
|
134
134
|
new_access_token, new_expires_in, new_refresh_token = cs.refresh_token
|
135
135
|
|
136
|
-
FakeWeb.last_request.body.should == "grant_type=refresh_token&refresh_token
|
136
|
+
FakeWeb.last_request.body.should == "grant_type=refresh_token&refresh_token=#{CGI.escape(@auth[:refresh_token])}"
|
137
137
|
new_access_token.should == "SlAV32hkKG2e12e"
|
138
138
|
new_expires_in.should == 1209600
|
139
139
|
new_refresh_token.should == "tGzv3JOkF0XG5Qx2TlKWIA"
|
@@ -162,7 +162,7 @@ class CreateSendTest < Test::Unit::TestCase
|
|
162
162
|
end
|
163
163
|
|
164
164
|
should "raise an error when an attempt to refresh the access token is made but the refresh token is invalid" do
|
165
|
-
refresh_token = '
|
165
|
+
refresh_token = 'ASP95S4aR+9KsgfHB0dapTYxNA=='
|
166
166
|
cs = CreateSend::CreateSend.new :access_token => 'any token', :refresh_token => refresh_token
|
167
167
|
options = {
|
168
168
|
:body => fixture_file("oauth_refresh_token_error.json"),
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: createsend
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.1.
|
4
|
+
version: 3.1.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-
|
12
|
+
date: 2013-04-10 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rake
|
@@ -279,9 +279,6 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
279
279
|
- - ! '>='
|
280
280
|
- !ruby/object:Gem::Version
|
281
281
|
version: '0'
|
282
|
-
segments:
|
283
|
-
- 0
|
284
|
-
hash: -935543352703407509
|
285
282
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
286
283
|
none: false
|
287
284
|
requirements:
|