chargify_api_ares 0.6.0 → 0.6.1
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +1 -0
- data/Gemfile.lock +2 -1
- data/README.md +36 -0
- data/chargify_api_ares.gemspec +4 -3
- data/lib/chargify_api_ares/config.rb +7 -7
- data/spec/remote/remote.example.yml +5 -2
- data/spec/remote/remote_helper.rb +5 -2
- data/spec/remote/remote_spec.rb +15 -11
- data/spec/spec_helper.rb +2 -1
- metadata +22 -2
data/.gitignore
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
chargify_api_ares (0.6.
|
4
|
+
chargify_api_ares (0.6.1)
|
5
5
|
activeresource (>= 3.0.0)
|
6
6
|
|
7
7
|
GEM
|
@@ -67,6 +67,7 @@ DEPENDENCIES
|
|
67
67
|
fakeweb (~> 1.3.0)
|
68
68
|
growl (~> 1.0.3)
|
69
69
|
guard-rspec (~> 2.4.0)
|
70
|
+
pry (~> 0.9.12)
|
70
71
|
rake (~> 10.0.3)
|
71
72
|
rb-fsevent (~> 0.9.2)
|
72
73
|
rspec (~> 2.12.0)
|
data/README.md
CHANGED
@@ -6,6 +6,42 @@ Chargify API wrapper for Ruby (using ActiveResource)
|
|
6
6
|
|
7
7
|
This is a Ruby wrapper for the [Chargify](http://chargify.com) API that leverages ActiveResource.
|
8
8
|
|
9
|
+
To configure api key, site, domain, and protocol you can do the
|
10
|
+
following. Please note that this step is required.
|
11
|
+
|
12
|
+
Most common usage
|
13
|
+
----------------
|
14
|
+
|
15
|
+
``` ruby
|
16
|
+
Chargify.configure do |c|
|
17
|
+
c.api_key = "your_key_goes_here"
|
18
|
+
c.subdomain = "test-site"
|
19
|
+
end
|
20
|
+
```
|
21
|
+
|
22
|
+
Overriding the endpoint
|
23
|
+
--------------
|
24
|
+
|
25
|
+
``` ruby
|
26
|
+
Chargify.configure do |c|
|
27
|
+
c.api_key = "your_key_goes_here"
|
28
|
+
c.site = "https://test-site.some-domain.com"
|
29
|
+
end
|
30
|
+
```
|
31
|
+
|
32
|
+
Available configuration options
|
33
|
+
-------------------------------
|
34
|
+
|
35
|
+
| Name | Description | Default | Required |
|
36
|
+
| ----------------- | ----------------------------------------------------------------------------------- | --------- | -------------------------- |
|
37
|
+
| api_key | The api_key credentials that are used to access your chargify account. | N/A | Yes |
|
38
|
+
| subdomain | The subdomain (site name) of the chargify endpoint you are trying to interact with | test | Yes (unless site was used) |
|
39
|
+
| domain | The domain of the endpoint, in which you want to interact with. | chargify.com | No |
|
40
|
+
| protocol | The endpoint protocol that you wish to use (http / https) | https | No |
|
41
|
+
| site | This is meant to override all three of the previous settings eg: http://foo.bar.com | N/A | No |
|
42
|
+
| format | The format of the request and response type that you want to deal with | xml | No |
|
43
|
+
| timeout | The time in seconds for a request to be valid. Will raise a timeout error if exceeds time limit. | N/A | No |
|
44
|
+
|
9
45
|
It allows you to interface with the Chargify API using simple ActiveRecord-like syntax, i.e.:
|
10
46
|
|
11
47
|
``` ruby
|
data/chargify_api_ares.gemspec
CHANGED
@@ -4,11 +4,11 @@ Gem::Specification.new do |s|
|
|
4
4
|
s.rubygems_version = '1.3.7'
|
5
5
|
|
6
6
|
s.name = 'chargify_api_ares'
|
7
|
-
s.version = '0.6.
|
8
|
-
s.date = '2013-02-
|
7
|
+
s.version = '0.6.1'
|
8
|
+
s.date = '2013-02-26'
|
9
9
|
s.summary = 'A Chargify API wrapper for Ruby using ActiveResource'
|
10
10
|
s.description = ''
|
11
|
-
s.authors = ["Michael Klett", "Nathan Verni", "Graham McIntire", "Rodrigo Franco", "Shay Frendt"]
|
11
|
+
s.authors = ["Michael Klett", "Nathan Verni", "Graham McIntire", "Jeremy W. Rowe", "Rodrigo Franco", "Shay Frendt"]
|
12
12
|
s.email = 'support@chargify.com'
|
13
13
|
s.homepage = 'http://github.com/chargify/chargify_api_ares'
|
14
14
|
|
@@ -28,4 +28,5 @@ Gem::Specification.new do |s|
|
|
28
28
|
s.add_development_dependency('guard-rspec', '~> 2.4.0')
|
29
29
|
s.add_development_dependency('growl', '~> 1.0.3')
|
30
30
|
s.add_development_dependency('rb-fsevent', '~> 0.9.2')
|
31
|
+
s.add_development_dependency('pry', '~> 0.9.12')
|
31
32
|
end
|
@@ -1,18 +1,18 @@
|
|
1
1
|
module Chargify
|
2
2
|
class << self
|
3
|
-
attr_accessor :subdomain, :api_key, :site, :format, :timeout
|
3
|
+
attr_accessor :subdomain, :api_key, :site, :format, :timeout, :domain, :protocol
|
4
4
|
|
5
5
|
def configure
|
6
6
|
yield self
|
7
|
-
|
7
|
+
self.protocol = protocol || "https"
|
8
|
+
self.domain = domain || "chargify.com"
|
9
|
+
self.format = format || :xml
|
10
|
+
self.subdomain = subdomain || "test"
|
8
11
|
Base.user = api_key
|
9
12
|
Base.password = 'X'
|
10
13
|
Base.timeout = timeout unless (timeout.blank?)
|
11
|
-
|
12
|
-
|
13
|
-
Base.site = site
|
14
|
-
self.format ||= :xml
|
15
|
-
Base.format = format
|
14
|
+
Base.site = site || "#{protocol}://#{subdomain}.#{domain}"
|
15
|
+
Base.format = format
|
16
16
|
end
|
17
17
|
end
|
18
18
|
end
|
@@ -2,5 +2,8 @@
|
|
2
2
|
#
|
3
3
|
# Note: Remote tests will only work when configured to run on a test site that uses the Bogus gateway.
|
4
4
|
# Warning: All data in the site specified will be cleared and replaced with test data.
|
5
|
-
api_key: your_api_key
|
6
|
-
|
5
|
+
api_key: your_api_key # your api key for your login (Required)
|
6
|
+
subdomain: your_site # the subdomain for the site you wish to test (Required)
|
7
|
+
#domain: ".foo.dev" # this is optional to point to a local version of chargify
|
8
|
+
#protocol: "http" # this is an optional value to use https or http
|
9
|
+
#site: "http://doo.foo-com" # this is optional to override the entire url
|
@@ -10,8 +10,11 @@ end
|
|
10
10
|
RSpec.configure do |config|
|
11
11
|
config.before(:all) do
|
12
12
|
Chargify.configure do |c|
|
13
|
-
c.api_key
|
14
|
-
c.
|
13
|
+
c.api_key = remote_configuration['api_key']
|
14
|
+
c.protocol = remote_configuration['protocol'] if remote_configuration['protocol']
|
15
|
+
c.domain = remote_configuration['domain'] if remote_configuration['domain']
|
16
|
+
c.subdomain = remote_configuration['subdomain'] if remote_configuration['subdomain']
|
17
|
+
c.site = remote_configuration['site'] if remote_configuration['site']
|
15
18
|
end
|
16
19
|
end
|
17
20
|
end
|
data/spec/remote/remote_spec.rb
CHANGED
@@ -34,9 +34,9 @@ describe "Remote" do
|
|
34
34
|
:email => "john.doe@example.com",
|
35
35
|
:reference => "johndoe")
|
36
36
|
end
|
37
|
-
|
37
|
+
|
38
38
|
let(:johnadoes_credit_card) { Chargify::PaymentProfile.create(good_payment_profile_attributes.merge(:customer_id => johnadoe.id)) }
|
39
|
-
|
39
|
+
|
40
40
|
before(:all) do
|
41
41
|
# Make sure the test site data is set up correctly
|
42
42
|
clear_site_data; acme_projects; basic_plan; pro_plan; johnadoe; johnadoes_credit_card
|
@@ -46,16 +46,16 @@ describe "Remote" do
|
|
46
46
|
context "when providing valid attributes for the customer and the payment profile" do
|
47
47
|
before(:all) do
|
48
48
|
@subscription = Chargify::Subscription.create(
|
49
|
-
:product_handle => basic_plan.handle,
|
49
|
+
:product_handle => basic_plan.handle,
|
50
50
|
:customer_attributes => {
|
51
51
|
:first_name => "Rick",
|
52
52
|
:last_name => "James",
|
53
53
|
:email => "rick@example.com",
|
54
54
|
:reference => "rickjames"
|
55
|
-
},
|
56
|
-
:payment_profile_attributes => good_payment_profile_attributes)
|
55
|
+
},
|
56
|
+
:payment_profile_attributes => good_payment_profile_attributes)
|
57
57
|
end
|
58
|
-
|
58
|
+
|
59
59
|
it "sets the current_period_started_at attribute to now" do
|
60
60
|
@subscription.current_period_started_at.utc.should be_within(60).of(now.utc)
|
61
61
|
end
|
@@ -128,7 +128,7 @@ describe "Remote" do
|
|
128
128
|
:last_name => "Marley",
|
129
129
|
:email => "ziggy@example.com",
|
130
130
|
:reference => "ziggy"
|
131
|
-
},
|
131
|
+
},
|
132
132
|
:payment_profile_attributes => unstorable_payment_profile_attributes)
|
133
133
|
end
|
134
134
|
|
@@ -155,7 +155,7 @@ describe "Remote" do
|
|
155
155
|
:last_name => "Denver",
|
156
156
|
:email => "john.denver@example.com",
|
157
157
|
:reference => "johndenver"
|
158
|
-
},
|
158
|
+
},
|
159
159
|
:payment_profile_attributes => pretokenized_card_attributes,
|
160
160
|
:next_billing_at => ten_days_from_now.utc)
|
161
161
|
@subscription.should be_a(Chargify::Subscription)
|
@@ -185,10 +185,14 @@ describe "Remote" do
|
|
185
185
|
:last_name => "Sinatra",
|
186
186
|
:email => "frank.sinatra@example.com",
|
187
187
|
:reference => "franksinatra"
|
188
|
-
},
|
188
|
+
},
|
189
189
|
:payment_profile_attributes => declined_payment_profile_attributes)
|
190
190
|
end
|
191
191
|
|
192
|
+
it "returns the correct error message" do
|
193
|
+
@subscription.errors[:base].should include "Bogus Gateway: Forced failure"
|
194
|
+
end
|
195
|
+
|
192
196
|
it "does not create the subscription" do
|
193
197
|
@subscription.should_not be_valid
|
194
198
|
end
|
@@ -281,7 +285,7 @@ describe "Remote" do
|
|
281
285
|
context "via Chargify::Subscription#refund" do
|
282
286
|
it "creates a refund" do
|
283
287
|
lambda{
|
284
|
-
@subscription.refund :payment_id => @payment.id, :amount => 7,
|
288
|
+
@subscription.refund :payment_id => @payment.id, :amount => 7,
|
285
289
|
:memo => 'Refunding One Time Charge'
|
286
290
|
}.should change{@subscription.reload.transactions.size}.by(1)
|
287
291
|
|
@@ -313,7 +317,7 @@ describe "Remote" do
|
|
313
317
|
tx.transaction_type.should == 'refund'
|
314
318
|
end
|
315
319
|
end
|
316
|
-
|
320
|
+
|
317
321
|
describe 'Webhooks' do
|
318
322
|
before(:all) do
|
319
323
|
@subscription = Chargify::Subscription.create(
|
data/spec/spec_helper.rb
CHANGED
@@ -4,6 +4,7 @@ require 'bundler'
|
|
4
4
|
Bundler.require(:default, :development)
|
5
5
|
|
6
6
|
require 'support/fake_resource'
|
7
|
+
require 'pry'
|
7
8
|
|
8
9
|
FactoryGirl.find_definitions
|
9
10
|
ActiveResource::Base.send :include, ActiveResource::FakeResource
|
@@ -13,7 +14,7 @@ Chargify.configure do |c|
|
|
13
14
|
c.subdomain = 'test'
|
14
15
|
c.api_key = 'test'
|
15
16
|
end
|
16
|
-
|
17
|
+
|
17
18
|
RSpec.configure do |config|
|
18
19
|
config.filter_run :focused => true
|
19
20
|
config.run_all_when_everything_filtered = true
|
metadata
CHANGED
@@ -1,19 +1,20 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: chargify_api_ares
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.6.
|
4
|
+
version: 0.6.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Michael Klett
|
9
9
|
- Nathan Verni
|
10
10
|
- Graham McIntire
|
11
|
+
- Jeremy W. Rowe
|
11
12
|
- Rodrigo Franco
|
12
13
|
- Shay Frendt
|
13
14
|
autorequire:
|
14
15
|
bindir: bin
|
15
16
|
cert_chain: []
|
16
|
-
date: 2013-02-
|
17
|
+
date: 2013-02-26 00:00:00.000000000 Z
|
17
18
|
dependencies:
|
18
19
|
- !ruby/object:Gem::Dependency
|
19
20
|
name: activeresource
|
@@ -159,6 +160,22 @@ dependencies:
|
|
159
160
|
- - ~>
|
160
161
|
- !ruby/object:Gem::Version
|
161
162
|
version: 0.9.2
|
163
|
+
- !ruby/object:Gem::Dependency
|
164
|
+
name: pry
|
165
|
+
requirement: !ruby/object:Gem::Requirement
|
166
|
+
none: false
|
167
|
+
requirements:
|
168
|
+
- - ~>
|
169
|
+
- !ruby/object:Gem::Version
|
170
|
+
version: 0.9.12
|
171
|
+
type: :development
|
172
|
+
prerelease: false
|
173
|
+
version_requirements: !ruby/object:Gem::Requirement
|
174
|
+
none: false
|
175
|
+
requirements:
|
176
|
+
- - ~>
|
177
|
+
- !ruby/object:Gem::Version
|
178
|
+
version: 0.9.12
|
162
179
|
description: ''
|
163
180
|
email: support@chargify.com
|
164
181
|
executables: []
|
@@ -225,6 +242,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
225
242
|
- - ! '>='
|
226
243
|
- !ruby/object:Gem::Version
|
227
244
|
version: '0'
|
245
|
+
segments:
|
246
|
+
- 0
|
247
|
+
hash: 4368782760728078099
|
228
248
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
229
249
|
none: false
|
230
250
|
requirements:
|