stripe 1.7.4 → 1.7.6
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +7 -1
- data/VERSION +1 -1
- data/lib/stripe.rb +2 -1
- data/lib/stripe/api_resource.rb +1 -1
- data/lib/stripe/invoice.rb +1 -0
- data/lib/stripe/list_object.rb +14 -0
- data/lib/stripe/transfer.rb +0 -11
- data/lib/stripe/util.rb +2 -1
- data/lib/stripe/version.rb +1 -1
- data/test/test_helper.rb +10 -2
- data/test/test_stripe.rb +30 -14
- metadata +29 -28
data/History.txt
CHANGED
@@ -1,3 +1,9 @@
|
|
1
|
+
=== 1.7.6 2012-10-30
|
2
|
+
* Add support for creating invoices.
|
3
|
+
|
4
|
+
=== 1.7.5 2012-10-25
|
5
|
+
* Add support for new API lists.
|
6
|
+
|
1
7
|
=== 1.7.4 2012-10-08
|
2
8
|
|
3
9
|
* Fix bug introduced in 1.7.3 calling API methods that take no
|
@@ -56,7 +62,7 @@
|
|
56
62
|
* A whole bunch of releases between 1.5.0 and 1.6.0, but few changes, mainly the addition of:
|
57
63
|
- plans
|
58
64
|
- coupons
|
59
|
-
- events
|
65
|
+
- events
|
60
66
|
- tokens
|
61
67
|
* 1.6.0 also contains a new inspect/to_string implementation
|
62
68
|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.7.
|
1
|
+
1.7.6
|
data/lib/stripe.rb
CHANGED
@@ -24,6 +24,7 @@ require 'stripe/json'
|
|
24
24
|
require 'stripe/stripe_object'
|
25
25
|
require 'stripe/api_resource'
|
26
26
|
require 'stripe/singleton_api_resource'
|
27
|
+
require 'stripe/list_object'
|
27
28
|
require 'stripe/account'
|
28
29
|
require 'stripe/customer'
|
29
30
|
require 'stripe/invoice'
|
@@ -46,7 +47,7 @@ require 'stripe/errors/authentication_error'
|
|
46
47
|
module Stripe
|
47
48
|
@@ssl_bundle_path = File.join(File.dirname(__FILE__), 'data/ca-certificates.crt')
|
48
49
|
@@api_key = nil
|
49
|
-
@@api_base = 'https://api.stripe.com
|
50
|
+
@@api_base = 'https://api.stripe.com'
|
50
51
|
@@verify_ssl_certs = true
|
51
52
|
|
52
53
|
def self.api_url(url='')
|
data/lib/stripe/api_resource.rb
CHANGED
@@ -8,7 +8,7 @@ module Stripe
|
|
8
8
|
if self == APIResource
|
9
9
|
raise NotImplementedError.new('APIResource is an abstract class. You should perform actions on its subclasses (Charge, Customer, etc.)')
|
10
10
|
end
|
11
|
-
"/#{CGI.escape(class_name.downcase)}s"
|
11
|
+
"/v1/#{CGI.escape(class_name.downcase)}s"
|
12
12
|
end
|
13
13
|
|
14
14
|
def url
|
data/lib/stripe/invoice.rb
CHANGED
@@ -0,0 +1,14 @@
|
|
1
|
+
module Stripe
|
2
|
+
class ListObject < StripeObject
|
3
|
+
|
4
|
+
def each(&blk)
|
5
|
+
self.data.each(&blk)
|
6
|
+
end
|
7
|
+
|
8
|
+
def all(filters={})
|
9
|
+
response, api_key = Stripe.request(:get, url, api_key, filters)
|
10
|
+
Util.convert_to_stripe_object(response, api_key)
|
11
|
+
end
|
12
|
+
|
13
|
+
end
|
14
|
+
end
|
data/lib/stripe/transfer.rb
CHANGED
@@ -1,16 +1,5 @@
|
|
1
1
|
module Stripe
|
2
2
|
class Transfer < APIResource
|
3
3
|
include Stripe::APIOperations::List
|
4
|
-
|
5
|
-
def transactions(params={})
|
6
|
-
response, api_key = Stripe.request(:get, transactions_url, @api_key, params)
|
7
|
-
Util.convert_to_stripe_object(response, api_key)
|
8
|
-
end
|
9
|
-
|
10
|
-
private
|
11
|
-
|
12
|
-
def transactions_url
|
13
|
-
url + '/transactions'
|
14
|
-
end
|
15
4
|
end
|
16
5
|
end
|
data/lib/stripe/util.rb
CHANGED
data/lib/stripe/version.rb
CHANGED
data/test/test_helper.rb
CHANGED
@@ -56,7 +56,11 @@ def test_customer(params={})
|
|
56
56
|
end
|
57
57
|
|
58
58
|
def test_customer_array
|
59
|
-
{
|
59
|
+
{
|
60
|
+
:data => [test_customer, test_customer, test_customer],
|
61
|
+
:object => 'list',
|
62
|
+
:url => '/v1/customers'
|
63
|
+
}
|
60
64
|
end
|
61
65
|
|
62
66
|
def test_charge(params={})
|
@@ -83,7 +87,11 @@ def test_charge(params={})
|
|
83
87
|
end
|
84
88
|
|
85
89
|
def test_charge_array
|
86
|
-
{
|
90
|
+
{
|
91
|
+
:data => [test_charge, test_charge, test_charge],
|
92
|
+
:object => 'list',
|
93
|
+
:url => '/v1/charges'
|
94
|
+
}
|
87
95
|
end
|
88
96
|
|
89
97
|
def test_card(params={})
|
data/test/test_stripe.rb
CHANGED
@@ -115,7 +115,7 @@ class TestStripeRuby < Test::Unit::TestCase
|
|
115
115
|
|
116
116
|
should "urlencode values in GET params" do
|
117
117
|
response = test_response(test_charge_array)
|
118
|
-
@mock.expects(:get).with(
|
118
|
+
@mock.expects(:get).with("#{Stripe.api_base}/v1/charges?customer=test%20customer", nil, nil).returns(response)
|
119
119
|
charges = Stripe::Charge.all(:customer => 'test customer').data
|
120
120
|
assert charges.kind_of? Array
|
121
121
|
end
|
@@ -172,20 +172,20 @@ class TestStripeRuby < Test::Unit::TestCase
|
|
172
172
|
@mock.expects(:get).with do |url, api_key, params|
|
173
173
|
uri = URI(url)
|
174
174
|
query = CGI.parse(uri.query)
|
175
|
-
(url =~ %r{
|
175
|
+
(url =~ %r{^#{Stripe.api_base}/v1/charges?} &&
|
176
176
|
query.keys.sort == ['offset', 'sad'])
|
177
177
|
end.returns(test_response({ :count => 1, :data => [test_charge] }))
|
178
178
|
c = Stripe::Charge.all(:count => nil, :offset => 5, :sad => false)
|
179
179
|
|
180
180
|
@mock.expects(:post).with do |url, api_key, params|
|
181
|
-
url ==
|
181
|
+
url == "#{Stripe.api_base}/v1/charges" && api_key.nil? && CGI.parse(params) == { 'amount' => ['50'], 'currency' => ['usd'] }
|
182
182
|
end.returns(test_response({ :count => 1, :data => [test_charge] }))
|
183
183
|
c = Stripe::Charge.create(:amount => 50, :currency => 'usd', :card => { :number => nil })
|
184
184
|
end
|
185
185
|
|
186
186
|
should "requesting with a unicode ID should result in a request" do
|
187
187
|
response = test_response(test_missing_id_error, 404)
|
188
|
-
@mock.expects(:get).once.with("
|
188
|
+
@mock.expects(:get).once.with("#{Stripe.api_base}/v1/customers/%E2%98%83", nil, nil).raises(RestClient::ExceptionWithResponse.new(response, 404))
|
189
189
|
c = Stripe::Customer.new("☃")
|
190
190
|
assert_raises(Stripe::InvalidRequestError) { c.refresh }
|
191
191
|
end
|
@@ -197,7 +197,7 @@ class TestStripeRuby < Test::Unit::TestCase
|
|
197
197
|
|
198
198
|
should "making a GET request with parameters should have a query string and no body" do
|
199
199
|
params = { :limit => 1 }
|
200
|
-
@mock.expects(:get).once.with("
|
200
|
+
@mock.expects(:get).once.with("#{Stripe.api_base}/v1/charges?limit=1", nil, nil).returns(test_response([test_charge]))
|
201
201
|
c = Stripe::Charge.all(params)
|
202
202
|
end
|
203
203
|
|
@@ -233,7 +233,7 @@ class TestStripeRuby < Test::Unit::TestCase
|
|
233
233
|
|
234
234
|
should "updating an object should issue a POST request with only the changed properties" do
|
235
235
|
@mock.expects(:post).with do |url, api_key, params|
|
236
|
-
url == "
|
236
|
+
url == "#{Stripe.api_base}/v1/customers/c_test_customer" && api_key.nil? && CGI.parse(params) == {'mnemonic' => ['another_mn']}
|
237
237
|
end.once.returns(test_response(test_customer))
|
238
238
|
c = Stripe::Customer.construct_from(test_customer)
|
239
239
|
c.mnemonic = "another_mn"
|
@@ -251,7 +251,7 @@ class TestStripeRuby < Test::Unit::TestCase
|
|
251
251
|
should "deleting should send no props and result in an object that has no props other deleted" do
|
252
252
|
@mock.expects(:get).never
|
253
253
|
@mock.expects(:post).never
|
254
|
-
@mock.expects(:delete).with("
|
254
|
+
@mock.expects(:delete).with("#{Stripe.api_base}/v1/customers/c_test_customer", nil, nil).once.returns(test_response({ "id" => "test_customer", "deleted" => true }))
|
255
255
|
|
256
256
|
c = Stripe::Customer.construct_from(test_customer)
|
257
257
|
c.delete
|
@@ -287,12 +287,28 @@ class TestStripeRuby < Test::Unit::TestCase
|
|
287
287
|
end
|
288
288
|
end
|
289
289
|
|
290
|
+
context "list tests" do
|
291
|
+
should "be able to retrieve full lists given a listobject" do
|
292
|
+
@mock.expects(:get).twice.returns(test_response(test_charge_array))
|
293
|
+
c = Stripe::Charge.all
|
294
|
+
assert c.kind_of?(Stripe::ListObject)
|
295
|
+
assert_equal('/v1/charges', c.url)
|
296
|
+
all = c.all
|
297
|
+
assert all.kind_of?(Stripe::ListObject)
|
298
|
+
assert_equal('/v1/charges', all.url)
|
299
|
+
assert all.data.kind_of?(Array)
|
300
|
+
end
|
301
|
+
end
|
302
|
+
|
290
303
|
context "charge tests" do
|
291
304
|
|
292
305
|
should "charges should be listable" do
|
293
306
|
@mock.expects(:get).once.returns(test_response(test_charge_array))
|
294
|
-
c = Stripe::Charge.all
|
295
|
-
assert c.kind_of? Array
|
307
|
+
c = Stripe::Charge.all
|
308
|
+
assert c.data.kind_of? Array
|
309
|
+
c.each do |charge|
|
310
|
+
assert charge.kind_of?(Stripe::Charge)
|
311
|
+
end
|
296
312
|
end
|
297
313
|
|
298
314
|
should "charges should be refundable" do
|
@@ -328,7 +344,7 @@ class TestStripeRuby < Test::Unit::TestCase
|
|
328
344
|
|
329
345
|
should "execute should return a new, fully executed charge when passed correct parameters" do
|
330
346
|
@mock.expects(:post).with do |url, api_key, params|
|
331
|
-
url ==
|
347
|
+
url == "#{Stripe.api_base}/v1/charges" && api_key.nil? && CGI.parse(params) == {
|
332
348
|
'currency' => ['usd'], 'amount' => ['100'],
|
333
349
|
'card[exp_year]' => ['2012'],
|
334
350
|
'card[number]' => ['4242424242424242'],
|
@@ -393,7 +409,7 @@ class TestStripeRuby < Test::Unit::TestCase
|
|
393
409
|
c = Stripe::Customer.retrieve("test_customer")
|
394
410
|
|
395
411
|
@mock.expects(:post).once.with do |url, api_key, params|
|
396
|
-
url == "
|
412
|
+
url == "#{Stripe.api_base}/v1/customers/c_test_customer/subscription" && api_key.nil? && CGI.parse(params) == {'plan' => ['silver']}
|
397
413
|
end.returns(test_response(test_subscription('silver')))
|
398
414
|
s = c.update_subscription({:plan => 'silver'})
|
399
415
|
|
@@ -407,10 +423,10 @@ class TestStripeRuby < Test::Unit::TestCase
|
|
407
423
|
|
408
424
|
# Not an accurate response, but whatever
|
409
425
|
|
410
|
-
@mock.expects(:delete).once.with("
|
426
|
+
@mock.expects(:delete).once.with("#{Stripe.api_base}/v1/customers/c_test_customer/subscription?at_period_end=true", nil, nil).returns(test_response(test_subscription('silver')))
|
411
427
|
s = c.cancel_subscription({:at_period_end => 'true'})
|
412
428
|
|
413
|
-
@mock.expects(:delete).once.with("
|
429
|
+
@mock.expects(:delete).once.with("#{Stripe.api_base}/v1/customers/c_test_customer/subscription", nil, nil).returns(test_response(test_subscription('silver')))
|
414
430
|
s = c.cancel_subscription
|
415
431
|
end
|
416
432
|
|
@@ -418,7 +434,7 @@ class TestStripeRuby < Test::Unit::TestCase
|
|
418
434
|
@mock.expects(:get).once.returns(test_response(test_customer))
|
419
435
|
c = Stripe::Customer.retrieve("test_customer")
|
420
436
|
|
421
|
-
@mock.expects(:delete).once.with("
|
437
|
+
@mock.expects(:delete).once.with("#{Stripe.api_base}/v1/customers/c_test_customer/discount", nil, nil).returns(test_response(test_delete_discount_response))
|
422
438
|
s = c.delete_discount
|
423
439
|
assert_equal nil, c.discount
|
424
440
|
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: stripe
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 7
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 1
|
8
8
|
- 7
|
9
|
-
-
|
10
|
-
version: 1.7.
|
9
|
+
- 6
|
10
|
+
version: 1.7.6
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Ross Boucher
|
@@ -16,12 +16,10 @@ autorequire:
|
|
16
16
|
bindir: bin
|
17
17
|
cert_chain: []
|
18
18
|
|
19
|
-
date: 2012-10-
|
19
|
+
date: 2012-10-31 00:00:00 Z
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
22
|
-
|
23
|
-
name: rest-client
|
24
|
-
version_requirements: &id001 !ruby/object:Gem::Requirement
|
22
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
25
23
|
none: false
|
26
24
|
requirements:
|
27
25
|
- - ~>
|
@@ -31,12 +29,12 @@ dependencies:
|
|
31
29
|
- 1
|
32
30
|
- 4
|
33
31
|
version: "1.4"
|
34
|
-
|
32
|
+
name: rest-client
|
35
33
|
type: :runtime
|
36
|
-
|
34
|
+
version_requirements: *id001
|
37
35
|
prerelease: false
|
38
|
-
|
39
|
-
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
40
38
|
none: false
|
41
39
|
requirements:
|
42
40
|
- - ~>
|
@@ -46,12 +44,12 @@ dependencies:
|
|
46
44
|
- 1
|
47
45
|
- 1
|
48
46
|
version: "1.1"
|
49
|
-
|
47
|
+
name: multi_json
|
50
48
|
type: :runtime
|
51
|
-
|
49
|
+
version_requirements: *id002
|
52
50
|
prerelease: false
|
53
|
-
|
54
|
-
|
51
|
+
- !ruby/object:Gem::Dependency
|
52
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
55
53
|
none: false
|
56
54
|
requirements:
|
57
55
|
- - ">="
|
@@ -60,12 +58,12 @@ dependencies:
|
|
60
58
|
segments:
|
61
59
|
- 0
|
62
60
|
version: "0"
|
63
|
-
|
61
|
+
name: mocha
|
64
62
|
type: :development
|
65
|
-
|
63
|
+
version_requirements: *id003
|
66
64
|
prerelease: false
|
67
|
-
|
68
|
-
|
65
|
+
- !ruby/object:Gem::Dependency
|
66
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
69
67
|
none: false
|
70
68
|
requirements:
|
71
69
|
- - ">="
|
@@ -74,12 +72,12 @@ dependencies:
|
|
74
72
|
segments:
|
75
73
|
- 0
|
76
74
|
version: "0"
|
77
|
-
|
75
|
+
name: shoulda
|
78
76
|
type: :development
|
79
|
-
|
77
|
+
version_requirements: *id004
|
80
78
|
prerelease: false
|
81
|
-
|
82
|
-
|
79
|
+
- !ruby/object:Gem::Dependency
|
80
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
83
81
|
none: false
|
84
82
|
requirements:
|
85
83
|
- - ">="
|
@@ -88,12 +86,12 @@ dependencies:
|
|
88
86
|
segments:
|
89
87
|
- 0
|
90
88
|
version: "0"
|
91
|
-
|
89
|
+
name: test-unit
|
92
90
|
type: :development
|
93
|
-
|
91
|
+
version_requirements: *id005
|
94
92
|
prerelease: false
|
95
|
-
|
96
|
-
|
93
|
+
- !ruby/object:Gem::Dependency
|
94
|
+
requirement: &id006 !ruby/object:Gem::Requirement
|
97
95
|
none: false
|
98
96
|
requirements:
|
99
97
|
- - ">="
|
@@ -102,8 +100,10 @@ dependencies:
|
|
102
100
|
segments:
|
103
101
|
- 0
|
104
102
|
version: "0"
|
105
|
-
|
103
|
+
name: rake
|
106
104
|
type: :development
|
105
|
+
version_requirements: *id006
|
106
|
+
prerelease: false
|
107
107
|
description: Stripe is the easiest way to accept payments online. See https://stripe.com for details.
|
108
108
|
email:
|
109
109
|
- boucher@stripe.com
|
@@ -153,6 +153,7 @@ files:
|
|
153
153
|
- lib/stripe/invoice.rb
|
154
154
|
- lib/stripe/invoice_item.rb
|
155
155
|
- lib/stripe/json.rb
|
156
|
+
- lib/stripe/list_object.rb
|
156
157
|
- lib/stripe/plan.rb
|
157
158
|
- lib/stripe/singleton_api_resource.rb
|
158
159
|
- lib/stripe/stripe_object.rb
|