createsend 3.4.0 → 4.0.0

Sign up to get free protection for your applications and to get access to all the features.
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
- }