createsend 3.4.0 → 4.0.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 926050427071f8eb42ba429844c13ead89fb2d28
4
- data.tar.gz: 372eab0ffce313a08dc718ec3f5f5f04578dedab
3
+ metadata.gz: da211cead45e0ca1c6b083f7b53c535212885abe
4
+ data.tar.gz: b27340d9c34db21fc2cf3aa12886c482854b75f7
5
5
  SHA512:
6
- metadata.gz: 67b44541f73648f0b80ddfc4980ccb520cdb9b94f13ee6f7a81729171eef73979f829495ce54c3d1aadc8710580d61b6fded6cda331521995dbce594a66e85e8
7
- data.tar.gz: cea89d6dc9058a3d64c56547fb2d253b73e141a3e5e75425d5e684f2a0a86f0bdc4b901dba1bc2efc24f584b6c59f8e0e556853709805172b84ee7bd2cbf566a
6
+ metadata.gz: d0d99c593cd1beb56782bca4664d51ad8794ef4445e4953a47f200977d8ce186b64ec63e4616b7a22fb18fd394e4e1a73c52ed9ef88801db32468df5602ca8a5
7
+ data.tar.gz: 84c93a100fcb6fff17e48d6fe00ccd332252dd4f8f54467452b1b7a20ddb4324b51902878b3c59840f08446cf3fe79377434931ff1a64856f728fbc4763ab00f
data/.gitignore CHANGED
@@ -1,7 +1,9 @@
1
1
  .DS_Store
2
+ .bundle
2
3
  coverage
3
4
  rdoc
4
5
  pkg
5
6
  *.gem
6
7
  example.rb
7
8
  .idea/
9
+ Gemfile.lock
@@ -1,12 +1,6 @@
1
1
  language: ruby
2
2
  rvm:
3
+ - 2.1.0
3
4
  - 2.0.0
4
5
  - 1.9.3
5
- - 1.9.2
6
- - jruby-18mode
7
6
  - jruby-19mode
8
- - rbx-18mode
9
- - rbx-19mode
10
- - jruby-head
11
- - 1.8.7
12
- - ree
@@ -1,8 +1,8 @@
1
1
  # Guidelines for contributing
2
2
 
3
3
  1. [Fork the repository](https://help.github.com/articles/fork-a-repo).
4
- 2. [Create a topic branch](http://learn.github.com/p/branching.html).
4
+ 2. Create a topic branch.
5
5
  3. Make your changes, including tests for your changes which maintain [coverage](https://coveralls.io/r/campaignmonitor/createsend-ruby).
6
- 4. Ensure that all tests pass, by running `bundle exec rake`. The [Travis CI build](https://travis-ci.org/campaignmonitor/createsend-ruby) runs on Ruby `2.0.0`, `1.9.3`, `1.9.2`, `jruby-18mode`, `jruby-19mode`, `rbx-18mode`, `rbx-19mode`, `ruby-head`, `jruby-head`, `1.8.7`, and `ree`.
6
+ 4. Ensure that all tests pass, by running `bundle exec rake`.
7
7
  5. It should go without saying, but do not increment the version number in your commits.
8
8
  6. [Submit a pull request](https://help.github.com/articles/using-pull-requests).
data/HISTORY.md CHANGED
@@ -1,5 +1,47 @@
1
1
  # createsend-ruby history
2
2
 
3
+ ## v4.0.0 - 19 Feb, 2014
4
+
5
+ * Removed `CreateSend::CreateSend#apikey` to promote using OAuth rather than basic auth with an API key.
6
+ * Started using the `https://api.createsend.com/api/v3.1/` API endpoint.
7
+ * Added support for new segments structure.
8
+ * Create and Update calls now require the new `rule_groups` structure, instead of a `rules` structure.
9
+
10
+ ```ruby
11
+ CreateSend::Segment.create(auth, list_id, title, rule_groups)
12
+ CreateSend::Segment.update(title, rule_groups)
13
+ ```
14
+
15
+ So for example, when you _previously_ would have created an argument like so:
16
+
17
+ ```ruby
18
+ rules = [ { :Subject => "EmailAddress", :Clauses => [ "CONTAINS example.com" ] } ]
19
+ ```
20
+
21
+ You would _now_ do this:
22
+
23
+ ```ruby
24
+ rule_groups = [ { :Rules => [ { :RuleType => "EmailAddress", :Clause => "CONTAINS example.com" } ] } ]
25
+ ```
26
+
27
+ * The Add Rule call is now Add Rule Group, taking a collection of rules in a single `rule_group` argument instead of separate `subject` & `clauses` arguments.
28
+
29
+ ```ruby
30
+ CreateSend::Segment.add_rule_group(rule_group)
31
+ ```
32
+
33
+ So for example, when you _previously_ would have added a rule like so:
34
+
35
+ ```ruby
36
+ @segment.add_rule "EmailAddress", [ "CONTAINS example.com" ]
37
+ ```
38
+
39
+ You would _now_ do this:
40
+
41
+ ```ruby
42
+ @segment.add_rule_group [ { :RuleType => "EmailAddress", :Clause => "CONTAINS @hello.com" } ]
43
+ ```
44
+
3
45
  ## v3.4.0 - 5 Jul, 2013
4
46
 
5
47
  * Added support for validating SSL certificates to avoid man-in-the-middle attacks.
data/LICENSE CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2010-2013 James Dennes
1
+ Copyright (c) 2010-2014 James Dennes
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining a copy
4
4
  of this software and associated documentation files (the "Software"), to deal
data/RELEASE.md CHANGED
@@ -14,12 +14,6 @@
14
14
 
15
15
  - Increment the `VERSION` constant in the `lib/createsend/version.rb` file, ensuring that you use [Semantic Versioning](http://semver.org/).
16
16
  - Add an entry to `HISTORY.md` which clearly explains the new release.
17
- - Ensure that the `Gemfile.lock` file is updated correctly by running:
18
-
19
- ```
20
- bundle install
21
- ```
22
-
23
17
  - Commit your changes:
24
18
 
25
19
  ```
@@ -40,6 +34,8 @@
40
34
 
41
35
  - Ensure that all [tests](https://travis-ci.org/campaignmonitor/createsend-ruby) pass, and that [coverage](https://coveralls.io/r/campaignmonitor/createsend-ruby) is maintained or improved.
42
36
 
37
+ - Add a new [GitHub Release](https://github.com/campaignmonitor/createsend-ruby/releases) using the newly created tag.
38
+
43
39
  ## Build the gem
44
40
 
45
41
  ```
@@ -26,4 +26,5 @@ Gem::Specification.new do |s|
26
26
  s.version = CreateSend::VERSION
27
27
  s.platform = Gem::Platform::RUBY
28
28
  s.required_rubygems_version = Gem::Requirement.new('>= 1.3.6') if s.respond_to? :required_rubygems_version=
29
+ s.licenses = ['MIT']
29
30
  end
@@ -84,7 +84,7 @@ module CreateSend
84
84
  :PreviewRecipients => recipients.kind_of?(String) ?
85
85
  [ recipients ] : recipients,
86
86
  :Personalize => personalize }.to_json }
87
- response = post "sendpreview", options
87
+ post "sendpreview", options
88
88
  end
89
89
 
90
90
  # Sends this campaign.
@@ -92,18 +92,18 @@ module CreateSend
92
92
  options = { :body => {
93
93
  :ConfirmationEmail => confirmation_email,
94
94
  :SendDate => send_date }.to_json }
95
- response = post "send", options
95
+ post "send", options
96
96
  end
97
97
 
98
98
  # Unschedules this campaign if it is currently scheduled.
99
99
  def unschedule
100
100
  options = { :body => "" }
101
- response = post "unschedule", options
101
+ post "unschedule", options
102
102
  end
103
103
 
104
104
  # Deletes this campaign.
105
105
  def delete
106
- response = super "/campaigns/#{campaign_id}.json", {}
106
+ super "/campaigns/#{campaign_id}.json", {}
107
107
  end
108
108
 
109
109
  # Gets a summary of this campaign
@@ -97,14 +97,14 @@ module CreateSend
97
97
  options = { :body => {
98
98
  :EmailAddresses => emails.kind_of?(String) ?
99
99
  [ emails ] : emails }.to_json }
100
- response = post "suppress", options
100
+ post "suppress", options
101
101
  end
102
102
 
103
103
  # Unsuppresses an email address by removing it from the the client's
104
104
  # suppression list
105
105
  def unsuppress(email)
106
106
  options = { :query => { :email => email }, :body => '' }
107
- response = put "unsuppress", options
107
+ put "unsuppress", options
108
108
  end
109
109
 
110
110
  # Gets the templates belonging to this client.
@@ -109,7 +109,7 @@ module CreateSend
109
109
  end
110
110
  end
111
111
 
112
- @@base_uri = "https://api.createsend.com/api/v3"
112
+ @@base_uri = "https://api.createsend.com/api/v3.1"
113
113
  @@oauth_base_uri = "https://api.createsend.com/oauth"
114
114
  @@oauth_token_uri = "#{@@oauth_base_uri}/token"
115
115
  headers({
@@ -139,16 +139,6 @@ module CreateSend
139
139
  [access_token, expires_in, refresh_token]
140
140
  end
141
141
 
142
- # Gets your CreateSend API key, given your site url, username and password.
143
- def apikey(site_url, username, password)
144
- site_url = CGI.escape(site_url)
145
- options = {:basic_auth => {:username => username, :password => password}}
146
- response = get("/apikey.json?SiteUrl=#{site_url}", options)
147
- result = Hashie::Mash.new(response)
148
- auth({:api_key => result.ApiKey}) if not @auth_details
149
- result
150
- end
151
-
152
142
  # Gets your clients.
153
143
  def clients
154
144
  response = get('/clients.json')
@@ -36,7 +36,7 @@ module CreateSend
36
36
 
37
37
  # Deletes this list.
38
38
  def delete
39
- response = super "/lists/#{list_id}.json", {}
39
+ super "/lists/#{list_id}.json", {}
40
40
  end
41
41
 
42
42
  # Creates a new custom field for this list.
@@ -77,8 +77,7 @@ module CreateSend
77
77
  # Deletes a custom field associated with this list.
78
78
  def delete_custom_field(custom_field_key)
79
79
  custom_field_key = CGI.escape(custom_field_key)
80
- response = cs_delete(
81
- "/lists/#{list_id}/customfields/#{custom_field_key}.json", {})
80
+ cs_delete("/lists/#{list_id}/customfields/#{custom_field_key}.json", {})
82
81
  end
83
82
 
84
83
  # Updates the options of a multi-optioned custom field on this list.
@@ -88,7 +87,7 @@ module CreateSend
88
87
  options = { :body => {
89
88
  :Options => new_options,
90
89
  :KeepExistingOptions => keep_existing_options }.to_json }
91
- response = put "customfields/#{custom_field_key}/options", options
90
+ put "customfields/#{custom_field_key}/options", options
92
91
  end
93
92
 
94
93
  # Gets the details of this list.
@@ -178,7 +177,7 @@ module CreateSend
178
177
  :UnsubscribeSetting => unsubscribe_setting,
179
178
  :AddUnsubscribesToSuppList => add_unsubscribes_to_supp_list,
180
179
  :ScrubActiveWithSuppList => scrub_active_with_supp_list }.to_json }
181
- response = cs_put "/lists/#{list_id}.json", options
180
+ cs_put "/lists/#{list_id}.json", options
182
181
  end
183
182
 
184
183
  # Gets the webhooks for this list.
@@ -202,26 +201,25 @@ module CreateSend
202
201
  # Tests that a post can be made to the endpoint specified for the webhook
203
202
  # identified by webhook_id.
204
203
  def test_webhook(webhook_id)
205
- response = get "webhooks/#{webhook_id}/test"
204
+ get "webhooks/#{webhook_id}/test"
206
205
  true # An exception will be raised if any error occurs
207
206
  end
208
207
 
209
208
  # Deletes a webhook associated with this list.
210
209
  def delete_webhook(webhook_id)
211
- response = cs_delete(
212
- "/lists/#{list_id}/webhooks/#{webhook_id}.json", {})
210
+ cs_delete("/lists/#{list_id}/webhooks/#{webhook_id}.json", {})
213
211
  end
214
212
 
215
213
  # Activates a webhook associated with this list.
216
214
  def activate_webhook(webhook_id)
217
215
  options = { :body => '' }
218
- response = put "webhooks/#{webhook_id}/activate", options
216
+ put "webhooks/#{webhook_id}/activate", options
219
217
  end
220
218
 
221
219
  # De-activates a webhook associated with this list.
222
220
  def deactivate_webhook(webhook_id)
223
221
  options = { :body => '' }
224
- response = put "webhooks/#{webhook_id}/deactivate", options
222
+ put "webhooks/#{webhook_id}/deactivate", options
225
223
  end
226
224
 
227
225
  private
@@ -9,29 +9,28 @@ module CreateSend
9
9
  end
10
10
 
11
11
  # Creates a new segment.
12
- def self.create(auth, list_id, title, rules)
12
+ def self.create(auth, list_id, title, rule_groups)
13
13
  options = { :body => {
14
14
  :Title => title,
15
- :Rules => rules }.to_json }
15
+ :RuleGroups => rule_groups }.to_json }
16
16
  cs = CreateSend.new auth
17
17
  response = cs.post "/segments/#{list_id}.json", options
18
18
  response.parsed_response
19
19
  end
20
20
 
21
21
  # Updates this segment.
22
- def update(title, rules)
22
+ def update(title, rule_groups)
23
23
  options = { :body => {
24
24
  :Title => title,
25
- :Rules => rules }.to_json }
26
- response = cs_put "/segments/#{segment_id}.json", options
25
+ :RuleGroups => rule_groups }.to_json }
26
+ cs_put "/segments/#{segment_id}.json", options
27
27
  end
28
28
 
29
29
  # Adds a rule to this segment.
30
- def add_rule(subject, clauses)
30
+ def add_rule_group(rule_group)
31
31
  options = { :body => {
32
- :Subject => subject,
33
- :Clauses => clauses }.to_json }
34
- response = post "rules", options
32
+ :Rules => rule_group }.to_json }
33
+ post "rules", options
35
34
  end
36
35
 
37
36
  # Gets the active subscribers in this segment.
@@ -55,12 +54,12 @@ module CreateSend
55
54
 
56
55
  # Clears all rules of this segment.
57
56
  def clear_rules
58
- response = cs_delete "/segments/#{segment_id}/rules.json", {}
57
+ cs_delete "/segments/#{segment_id}/rules.json", {}
59
58
  end
60
59
 
61
60
  # Deletes this segment.
62
61
  def delete
63
- response = super "/segments/#{segment_id}.json", {}
62
+ super "/segments/#{segment_id}.json", {}
64
63
  end
65
64
 
66
65
  private
@@ -31,12 +31,12 @@ module CreateSend
31
31
  :Name => name,
32
32
  :HtmlPageURL => html_url,
33
33
  :ZipFileURL => zip_url }.to_json }
34
- response = put "/templates/#{template_id}.json", options
34
+ put "/templates/#{template_id}.json", options
35
35
  end
36
36
 
37
37
  # Deletes this email template.
38
38
  def delete
39
- response = super "/templates/#{template_id}.json", {}
39
+ super "/templates/#{template_id}.json", {}
40
40
  end
41
41
  end
42
42
  end
@@ -1,3 +1,3 @@
1
1
  module CreateSend
2
- VERSION = "3.4.0" unless defined?(CreateSend::VERSION)
2
+ VERSION = "4.0.0" unless defined?(CreateSend::VERSION)
3
3
  end
@@ -100,19 +100,6 @@ class CreateSendTest < Test::Unit::TestCase
100
100
  FakeWeb.last_request.body.should == "grant_type=refresh_token&refresh_token=#{CGI.escape(refresh_token)}"
101
101
  end
102
102
 
103
- should "get a person's api key" do
104
- base_uri = "https://api.createsend.com/api/v3"
105
- uri = URI.parse(base_uri)
106
- site_url = "http://iamadesigner.createsend.com/"
107
- username = "myusername"
108
- password = "mypassword"
109
- cs = CreateSend::CreateSend.new
110
- stub_get(nil, "https://#{username}:#{password}@#{uri.host}#{uri.path}/apikey.json?SiteUrl=#{CGI.escape(site_url)}", "apikey.json")
111
- apikey = cs.apikey(site_url, username, password).ApiKey
112
- apikey.should == "981298u298ue98u219e8u2e98u2"
113
- cs.auth_details.should == {:api_key => apikey}
114
- end
115
-
116
103
  end
117
104
 
118
105
  context "when an api caller is authenticated using oauth" do
@@ -1,16 +1,20 @@
1
1
  {
2
2
  "ActiveSubscribers": 0,
3
- "Rules": [
3
+ "RuleGroups": [
4
4
  {
5
- "Subject": "EmailAddress",
6
- "Clauses": [
7
- "CONTAINS @hello.com"
5
+ "Rules": [
6
+ {
7
+ "RuleType": "EmailAddress",
8
+ "Clause": "CONTAINS @hello.com"
9
+ }
8
10
  ]
9
11
  },
10
12
  {
11
- "Subject": "Name",
12
- "Clauses": [
13
- "PROVIDED"
13
+ "Rules": [
14
+ {
15
+ "RuleType": "Name",
16
+ "Clause": "PROVIDED"
17
+ }
14
18
  ]
15
19
  }
16
20
  ],
@@ -30,7 +30,7 @@ def createsend_url(auth, url)
30
30
  if not url =~ /^http/
31
31
  auth_section = ''
32
32
  auth_section = "#{auth[:api_key]}:x@" if auth and auth.has_key? :api_key
33
- result = "https://#{auth_section}api.createsend.com/api/v3/#{url}"
33
+ result = "https://#{auth_section}api.createsend.com/api/v3.1/#{url}"
34
34
  else
35
35
  result = url
36
36
  end
@@ -8,22 +8,22 @@ class SegmentTest < Test::Unit::TestCase
8
8
 
9
9
  should "create a new segment" do
10
10
  list_id = "2983492834987394879837498"
11
- rules = [ { :Subject => "EmailAddress", :Clauses => [ "CONTAINS example.com" ] } ]
11
+ rule_groups = [ { :Rules => [ { :RuleType => "EmailAddress", :Clause => "CONTAINS example.com" } ] } ]
12
12
  stub_post(@auth, "segments/#{list_id}.json", "create_segment.json")
13
- res = CreateSend::Segment.create @auth, list_id, "new segment title", rules
13
+ res = CreateSend::Segment.create @auth, list_id, "new segment title", rule_groups
14
14
  res.should == "0246c2aea610a3545d9780bf6ab89006"
15
15
  end
16
16
 
17
17
  should "update a segment" do
18
- rules = [ { :Subject => "Name", :Clauses => [ "EQUALS subscriber" ] } ]
18
+ rules = [ { :Rules => [ { :RuleType => "Name", :Clause => "PROVIDED" } ] } ]
19
19
  stub_put(@auth, "segments/#{@segment.segment_id}.json", nil)
20
20
  @segment.update "new title for segment", rules
21
21
  end
22
22
 
23
- should "add a rule to a segment" do
24
- clauses = [ "CONTAINS example.com" ]
23
+ should "add a rule group to a segment" do
24
+ rule_group = [ { :RuleType => "EmailAddress", :Clause => "CONTAINS @hello.com" } ]
25
25
  stub_post(@auth, "segments/#{@segment.segment_id}/rules.json", nil)
26
- @segment.add_rule "EmailAddress", clauses
26
+ @segment.add_rule_group rule_group
27
27
  end
28
28
 
29
29
  should "get the active subscribers for a particular segment in the list" do
@@ -55,10 +55,10 @@ class SegmentTest < Test::Unit::TestCase
55
55
  stub_get(@auth, "segments/#{@segment.segment_id}.json", "segment_details.json")
56
56
  res = @segment.details
57
57
  res.ActiveSubscribers.should == 0
58
- res.Rules.size.should == 2
59
- res.Rules.first.Subject.should == "EmailAddress"
60
- res.Rules.first.Clauses.size.should == 1
61
- res.Rules.first.Clauses.first.should == "CONTAINS @hello.com"
58
+ res.RuleGroups.size.should == 2
59
+ res.RuleGroups.first.Rules.size.should == 1
60
+ res.RuleGroups.first.Rules.first.RuleType.should == "EmailAddress"
61
+ res.RuleGroups.first.Rules.first.Clause.should == "CONTAINS @hello.com"
62
62
  res.ListID.should == "2bea949d0bf96148c3e6a209d2e82060"
63
63
  res.SegmentID.should == "dba84a225d5ce3d19105d7257baac46f"
64
64
  res.Title.should == "My Segment"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: createsend
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.4.0
4
+ version: 4.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Dennes
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-07-06 00:00:00.000000000 Z
11
+ date: 2014-02-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -154,7 +154,6 @@ files:
154
154
  - .travis.yml
155
155
  - CONTRIBUTING.md
156
156
  - Gemfile
157
- - Gemfile.lock
158
157
  - HISTORY.md
159
158
  - LICENSE
160
159
  - README.md
@@ -185,7 +184,6 @@ files:
185
184
  - test/fixtures/admin_get_primary_contact.json
186
185
  - test/fixtures/admin_set_primary_contact.json
187
186
  - test/fixtures/administrators.json
188
- - test/fixtures/apikey.json
189
187
  - test/fixtures/billingdetails.json
190
188
  - test/fixtures/bounced_subscribers.json
191
189
  - test/fixtures/campaign_bounces.json
@@ -253,7 +251,8 @@ files:
253
251
  - test/subscriber_test.rb
254
252
  - test/template_test.rb
255
253
  homepage: http://campaignmonitor.github.io/createsend-ruby/
256
- licenses: []
254
+ licenses:
255
+ - MIT
257
256
  metadata: {}
258
257
  post_install_message:
259
258
  rdoc_options: []
@@ -271,7 +270,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
271
270
  version: 1.3.6
272
271
  requirements: []
273
272
  rubyforge_project:
274
- rubygems_version: 2.0.2
273
+ rubygems_version: 2.0.3
275
274
  signing_key:
276
275
  specification_version: 4
277
276
  summary: A library which implements the complete functionality of the Campaign Monitor
@@ -289,7 +288,6 @@ test_files:
289
288
  - test/fixtures/admin_get_primary_contact.json
290
289
  - test/fixtures/admin_set_primary_contact.json
291
290
  - test/fixtures/administrators.json
292
- - test/fixtures/apikey.json
293
291
  - test/fixtures/billingdetails.json
294
292
  - test/fixtures/bounced_subscribers.json
295
293
  - test/fixtures/campaign_bounces.json
@@ -1,64 +0,0 @@
1
- PATH
2
- remote: .
3
- specs:
4
- createsend (3.4.0)
5
- hashie (>= 1.2, < 3)
6
- httparty (~> 0.10)
7
- json
8
-
9
- GEM
10
- remote: https://rubygems.org/
11
- specs:
12
- activesupport (3.2.11)
13
- i18n (~> 0.6)
14
- multi_json (~> 1.0)
15
- bourne (1.1.2)
16
- mocha (= 0.10.5)
17
- colorize (0.5.8)
18
- coveralls (0.6.3)
19
- colorize
20
- multi_json (~> 1.3)
21
- rest-client
22
- simplecov (>= 0.7)
23
- thor
24
- fakeweb (1.3.0)
25
- hashie (2.0.4)
26
- httparty (0.11.0)
27
- multi_json (~> 1.0)
28
- multi_xml (>= 0.5.2)
29
- i18n (0.6.1)
30
- jnunemaker-matchy (0.4.0)
31
- json (1.7.7)
32
- metaclass (0.0.1)
33
- mime-types (1.21)
34
- mocha (0.10.5)
35
- metaclass (~> 0.0.1)
36
- multi_json (1.5.0)
37
- multi_xml (0.5.3)
38
- rake (10.0.3)
39
- rest-client (1.6.7)
40
- mime-types (>= 1.16)
41
- shoulda (3.3.2)
42
- shoulda-context (~> 1.0.1)
43
- shoulda-matchers (~> 1.4.1)
44
- shoulda-context (1.0.2)
45
- shoulda-matchers (1.4.2)
46
- activesupport (>= 3.0.0)
47
- bourne (~> 1.1.2)
48
- simplecov (0.7.1)
49
- multi_json (~> 1.0)
50
- simplecov-html (~> 0.7.1)
51
- simplecov-html (0.7.1)
52
- thor (0.18.0)
53
-
54
- PLATFORMS
55
- ruby
56
-
57
- DEPENDENCIES
58
- coveralls
59
- createsend!
60
- fakeweb (~> 1.3)
61
- jnunemaker-matchy (~> 0.4)
62
- rake (~> 10.0)
63
- shoulda (~> 3.3)
64
- simplecov
@@ -1,3 +0,0 @@
1
- {
2
- "ApiKey": "981298u298ue98u219e8u2e98u2"
3
- }