stripe 1.18.0 → 1.30.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (81) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +1 -0
  3. data/.travis.yml +11 -1
  4. data/History.txt +98 -0
  5. data/README.rdoc +19 -10
  6. data/VERSION +1 -1
  7. data/lib/stripe/account.rb +46 -4
  8. data/lib/stripe/api_operations/create.rb +3 -10
  9. data/lib/stripe/api_operations/delete.rb +4 -4
  10. data/lib/stripe/api_operations/list.rb +17 -9
  11. data/lib/stripe/api_operations/request.rb +41 -0
  12. data/lib/stripe/api_operations/update.rb +41 -40
  13. data/lib/stripe/api_resource.rb +7 -4
  14. data/lib/stripe/application_fee.rb +3 -4
  15. data/lib/stripe/application_fee_refund.rb +1 -1
  16. data/lib/stripe/balance_transaction.rb +1 -1
  17. data/lib/stripe/bank_account.rb +19 -0
  18. data/lib/stripe/bitcoin_receiver.rb +12 -2
  19. data/lib/stripe/bitcoin_transaction.rb +5 -0
  20. data/lib/stripe/card.rb +6 -4
  21. data/lib/stripe/charge.rb +14 -22
  22. data/lib/stripe/coupon.rb +2 -2
  23. data/lib/stripe/customer.rb +24 -26
  24. data/lib/stripe/dispute.rb +16 -0
  25. data/lib/stripe/errors/card_error.rb +3 -2
  26. data/lib/stripe/errors/invalid_request_error.rb +3 -2
  27. data/lib/stripe/errors/rate_limit_error.rb +4 -0
  28. data/lib/stripe/errors/stripe_error.rb +8 -2
  29. data/lib/stripe/event.rb +1 -1
  30. data/lib/stripe/file_upload.rb +12 -22
  31. data/lib/stripe/invoice.rb +8 -8
  32. data/lib/stripe/invoice_item.rb +2 -2
  33. data/lib/stripe/list_object.rb +77 -13
  34. data/lib/stripe/order.rb +19 -0
  35. data/lib/stripe/plan.rb +2 -2
  36. data/lib/stripe/product.rb +16 -0
  37. data/lib/stripe/recipient.rb +2 -2
  38. data/lib/stripe/refund.rb +2 -9
  39. data/lib/stripe/reversal.rb +14 -0
  40. data/lib/stripe/singleton_api_resource.rb +2 -2
  41. data/lib/stripe/sku.rb +8 -0
  42. data/lib/stripe/stripe_object.rb +232 -46
  43. data/lib/stripe/subscription.rb +3 -3
  44. data/lib/stripe/token.rb +1 -1
  45. data/lib/stripe/transfer.rb +3 -3
  46. data/lib/stripe/util.rb +64 -21
  47. data/lib/stripe/version.rb +1 -1
  48. data/lib/stripe.rb +102 -67
  49. data/stripe.gemspec +0 -2
  50. data/test/stripe/account_test.rb +135 -6
  51. data/test/stripe/api_resource_test.rb +326 -42
  52. data/test/stripe/application_fee_refund_test.rb +6 -6
  53. data/test/stripe/application_fee_test.rb +3 -3
  54. data/test/stripe/balance_test.rb +11 -0
  55. data/test/stripe/bitcoin_receiver_test.rb +30 -7
  56. data/test/stripe/bitcoin_transaction_test.rb +29 -0
  57. data/test/stripe/charge_refund_test.rb +55 -0
  58. data/test/stripe/charge_test.rb +32 -13
  59. data/test/stripe/coupon_test.rb +3 -3
  60. data/test/stripe/customer_card_test.rb +20 -14
  61. data/test/stripe/customer_test.rb +15 -15
  62. data/test/stripe/dispute_test.rb +45 -0
  63. data/test/stripe/file_upload_test.rb +17 -6
  64. data/test/stripe/invoice_test.rb +18 -4
  65. data/test/stripe/list_object_test.rb +126 -2
  66. data/test/stripe/metadata_test.rb +28 -13
  67. data/test/stripe/order_test.rb +52 -0
  68. data/test/stripe/product_test.rb +41 -0
  69. data/test/stripe/recipient_card_test.rb +9 -9
  70. data/test/stripe/refund_test.rb +23 -15
  71. data/test/stripe/reversal_test.rb +47 -0
  72. data/test/stripe/sku_test.rb +24 -0
  73. data/test/stripe/stripe_object_test.rb +67 -6
  74. data/test/stripe/subscription_test.rb +13 -13
  75. data/test/stripe/transfer_test.rb +4 -4
  76. data/test/stripe/util_test.rb +45 -29
  77. data/test/stripe_test.rb +16 -0
  78. data/test/test_data.rb +273 -66
  79. metadata +47 -76
  80. data/lib/stripe/certificate_blacklist.rb +0 -55
  81. data/test/stripe/certificate_blacklist_test.rb +0 -18
metadata CHANGED
@@ -1,8 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: stripe
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.18.0
5
- prerelease:
4
+ version: 1.30.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - Ross Boucher
@@ -10,140 +9,90 @@ authors:
10
9
  autorequire:
11
10
  bindir: bin
12
11
  cert_chain: []
13
- date: 2015-01-22 00:00:00.000000000 Z
12
+ date: 2015-10-09 00:00:00.000000000 Z
14
13
  dependencies:
15
14
  - !ruby/object:Gem::Dependency
16
15
  name: rest-client
17
16
  requirement: !ruby/object:Gem::Requirement
18
- none: false
19
17
  requirements:
20
- - - ~>
18
+ - - "~>"
21
19
  - !ruby/object:Gem::Version
22
20
  version: '1.4'
23
21
  type: :runtime
24
22
  prerelease: false
25
23
  version_requirements: !ruby/object:Gem::Requirement
26
- none: false
27
24
  requirements:
28
- - - ~>
25
+ - - "~>"
29
26
  - !ruby/object:Gem::Version
30
27
  version: '1.4'
31
- - !ruby/object:Gem::Dependency
32
- name: mime-types
33
- requirement: !ruby/object:Gem::Requirement
34
- none: false
35
- requirements:
36
- - - ! '>='
37
- - !ruby/object:Gem::Version
38
- version: '1.25'
39
- - - <
40
- - !ruby/object:Gem::Version
41
- version: '3.0'
42
- type: :runtime
43
- prerelease: false
44
- version_requirements: !ruby/object:Gem::Requirement
45
- none: false
46
- requirements:
47
- - - ! '>='
48
- - !ruby/object:Gem::Version
49
- version: '1.25'
50
- - - <
51
- - !ruby/object:Gem::Version
52
- version: '3.0'
53
28
  - !ruby/object:Gem::Dependency
54
29
  name: json
55
30
  requirement: !ruby/object:Gem::Requirement
56
- none: false
57
31
  requirements:
58
- - - ~>
32
+ - - "~>"
59
33
  - !ruby/object:Gem::Version
60
34
  version: 1.8.1
61
35
  type: :runtime
62
36
  prerelease: false
63
37
  version_requirements: !ruby/object:Gem::Requirement
64
- none: false
65
38
  requirements:
66
- - - ~>
39
+ - - "~>"
67
40
  - !ruby/object:Gem::Version
68
41
  version: 1.8.1
69
42
  - !ruby/object:Gem::Dependency
70
43
  name: mocha
71
44
  requirement: !ruby/object:Gem::Requirement
72
- none: false
73
45
  requirements:
74
- - - ~>
46
+ - - "~>"
75
47
  - !ruby/object:Gem::Version
76
48
  version: 0.13.2
77
49
  type: :development
78
50
  prerelease: false
79
51
  version_requirements: !ruby/object:Gem::Requirement
80
- none: false
81
52
  requirements:
82
- - - ~>
53
+ - - "~>"
83
54
  - !ruby/object:Gem::Version
84
55
  version: 0.13.2
85
56
  - !ruby/object:Gem::Dependency
86
57
  name: shoulda
87
58
  requirement: !ruby/object:Gem::Requirement
88
- none: false
89
59
  requirements:
90
- - - ~>
60
+ - - "~>"
91
61
  - !ruby/object:Gem::Version
92
62
  version: 3.4.0
93
63
  type: :development
94
64
  prerelease: false
95
65
  version_requirements: !ruby/object:Gem::Requirement
96
- none: false
97
66
  requirements:
98
- - - ~>
67
+ - - "~>"
99
68
  - !ruby/object:Gem::Version
100
69
  version: 3.4.0
101
70
  - !ruby/object:Gem::Dependency
102
71
  name: test-unit
103
72
  requirement: !ruby/object:Gem::Requirement
104
- none: false
105
73
  requirements:
106
- - - ! '>='
74
+ - - ">="
107
75
  - !ruby/object:Gem::Version
108
76
  version: '0'
109
77
  type: :development
110
78
  prerelease: false
111
79
  version_requirements: !ruby/object:Gem::Requirement
112
- none: false
113
80
  requirements:
114
- - - ! '>='
81
+ - - ">="
115
82
  - !ruby/object:Gem::Version
116
83
  version: '0'
117
84
  - !ruby/object:Gem::Dependency
118
85
  name: rake
119
86
  requirement: !ruby/object:Gem::Requirement
120
- none: false
121
- requirements:
122
- - - ! '>='
123
- - !ruby/object:Gem::Version
124
- version: '0'
125
- type: :development
126
- prerelease: false
127
- version_requirements: !ruby/object:Gem::Requirement
128
- none: false
129
- requirements:
130
- - - ! '>='
131
- - !ruby/object:Gem::Version
132
- version: '0'
133
- - !ruby/object:Gem::Dependency
134
- name: pry
135
- requirement: !ruby/object:Gem::Requirement
136
- none: false
137
87
  requirements:
138
- - - ! '>='
88
+ - - ">="
139
89
  - !ruby/object:Gem::Version
140
90
  version: '0'
141
91
  type: :development
142
92
  prerelease: false
143
93
  version_requirements: !ruby/object:Gem::Requirement
144
- none: false
145
94
  requirements:
146
- - - ! '>='
95
+ - - ">="
147
96
  - !ruby/object:Gem::Version
148
97
  version: '0'
149
98
  description: Stripe is the easiest way to accept payments online. See https://stripe.com
@@ -156,8 +105,8 @@ executables:
156
105
  extensions: []
157
106
  extra_rdoc_files: []
158
107
  files:
159
- - .gitignore
160
- - .travis.yml
108
+ - ".gitignore"
109
+ - ".travis.yml"
161
110
  - CONTRIBUTORS
162
111
  - Gemfile
163
112
  - History.txt
@@ -175,34 +124,41 @@ files:
175
124
  - lib/stripe/api_operations/create.rb
176
125
  - lib/stripe/api_operations/delete.rb
177
126
  - lib/stripe/api_operations/list.rb
127
+ - lib/stripe/api_operations/request.rb
178
128
  - lib/stripe/api_operations/update.rb
179
129
  - lib/stripe/api_resource.rb
180
130
  - lib/stripe/application_fee.rb
181
131
  - lib/stripe/application_fee_refund.rb
182
132
  - lib/stripe/balance.rb
183
133
  - lib/stripe/balance_transaction.rb
134
+ - lib/stripe/bank_account.rb
184
135
  - lib/stripe/bitcoin_receiver.rb
185
136
  - lib/stripe/bitcoin_transaction.rb
186
137
  - lib/stripe/card.rb
187
- - lib/stripe/certificate_blacklist.rb
188
138
  - lib/stripe/charge.rb
189
139
  - lib/stripe/coupon.rb
190
140
  - lib/stripe/customer.rb
141
+ - lib/stripe/dispute.rb
191
142
  - lib/stripe/errors/api_connection_error.rb
192
143
  - lib/stripe/errors/api_error.rb
193
144
  - lib/stripe/errors/authentication_error.rb
194
145
  - lib/stripe/errors/card_error.rb
195
146
  - lib/stripe/errors/invalid_request_error.rb
147
+ - lib/stripe/errors/rate_limit_error.rb
196
148
  - lib/stripe/errors/stripe_error.rb
197
149
  - lib/stripe/event.rb
198
150
  - lib/stripe/file_upload.rb
199
151
  - lib/stripe/invoice.rb
200
152
  - lib/stripe/invoice_item.rb
201
153
  - lib/stripe/list_object.rb
154
+ - lib/stripe/order.rb
202
155
  - lib/stripe/plan.rb
156
+ - lib/stripe/product.rb
203
157
  - lib/stripe/recipient.rb
204
158
  - lib/stripe/refund.rb
159
+ - lib/stripe/reversal.rb
205
160
  - lib/stripe/singleton_api_resource.rb
161
+ - lib/stripe/sku.rb
206
162
  - lib/stripe/stripe_object.rb
207
163
  - lib/stripe/subscription.rb
208
164
  - lib/stripe/token.rb
@@ -214,70 +170,85 @@ files:
214
170
  - test/stripe/api_resource_test.rb
215
171
  - test/stripe/application_fee_refund_test.rb
216
172
  - test/stripe/application_fee_test.rb
173
+ - test/stripe/balance_test.rb
217
174
  - test/stripe/bitcoin_receiver_test.rb
218
- - test/stripe/certificate_blacklist_test.rb
175
+ - test/stripe/bitcoin_transaction_test.rb
176
+ - test/stripe/charge_refund_test.rb
219
177
  - test/stripe/charge_test.rb
220
178
  - test/stripe/coupon_test.rb
221
179
  - test/stripe/customer_card_test.rb
222
180
  - test/stripe/customer_test.rb
181
+ - test/stripe/dispute_test.rb
223
182
  - test/stripe/file_upload_test.rb
224
183
  - test/stripe/invoice_test.rb
225
184
  - test/stripe/list_object_test.rb
226
185
  - test/stripe/metadata_test.rb
186
+ - test/stripe/order_test.rb
187
+ - test/stripe/product_test.rb
227
188
  - test/stripe/recipient_card_test.rb
228
189
  - test/stripe/refund_test.rb
190
+ - test/stripe/reversal_test.rb
191
+ - test/stripe/sku_test.rb
229
192
  - test/stripe/stripe_object_test.rb
230
193
  - test/stripe/subscription_test.rb
231
194
  - test/stripe/transfer_test.rb
232
195
  - test/stripe/util_test.rb
196
+ - test/stripe_test.rb
233
197
  - test/test_data.rb
234
198
  - test/test_helper.rb
235
199
  homepage: https://stripe.com/api
236
200
  licenses:
237
201
  - MIT
202
+ metadata: {}
238
203
  post_install_message:
239
204
  rdoc_options: []
240
205
  require_paths:
241
206
  - lib
242
207
  required_ruby_version: !ruby/object:Gem::Requirement
243
- none: false
244
208
  requirements:
245
- - - ! '>='
209
+ - - ">="
246
210
  - !ruby/object:Gem::Version
247
211
  version: '0'
248
212
  required_rubygems_version: !ruby/object:Gem::Requirement
249
- none: false
250
213
  requirements:
251
- - - ! '>='
214
+ - - ">="
252
215
  - !ruby/object:Gem::Version
253
216
  version: '0'
254
217
  requirements: []
255
218
  rubyforge_project:
256
- rubygems_version: 1.8.23
219
+ rubygems_version: 2.2.2
257
220
  signing_key:
258
- specification_version: 3
221
+ specification_version: 4
259
222
  summary: Ruby bindings for the Stripe API
260
223
  test_files:
261
224
  - test/stripe/account_test.rb
262
225
  - test/stripe/api_resource_test.rb
263
226
  - test/stripe/application_fee_refund_test.rb
264
227
  - test/stripe/application_fee_test.rb
228
+ - test/stripe/balance_test.rb
265
229
  - test/stripe/bitcoin_receiver_test.rb
266
- - test/stripe/certificate_blacklist_test.rb
230
+ - test/stripe/bitcoin_transaction_test.rb
231
+ - test/stripe/charge_refund_test.rb
267
232
  - test/stripe/charge_test.rb
268
233
  - test/stripe/coupon_test.rb
269
234
  - test/stripe/customer_card_test.rb
270
235
  - test/stripe/customer_test.rb
236
+ - test/stripe/dispute_test.rb
271
237
  - test/stripe/file_upload_test.rb
272
238
  - test/stripe/invoice_test.rb
273
239
  - test/stripe/list_object_test.rb
274
240
  - test/stripe/metadata_test.rb
241
+ - test/stripe/order_test.rb
242
+ - test/stripe/product_test.rb
275
243
  - test/stripe/recipient_card_test.rb
276
244
  - test/stripe/refund_test.rb
245
+ - test/stripe/reversal_test.rb
246
+ - test/stripe/sku_test.rb
277
247
  - test/stripe/stripe_object_test.rb
278
248
  - test/stripe/subscription_test.rb
279
249
  - test/stripe/transfer_test.rb
280
250
  - test/stripe/util_test.rb
251
+ - test/stripe_test.rb
281
252
  - test/test_data.rb
282
253
  - test/test_helper.rb
283
254
  has_rdoc:
@@ -1,55 +0,0 @@
1
- require 'uri'
2
- require 'digest/sha1'
3
-
4
- module Stripe
5
- module CertificateBlacklist
6
-
7
- BLACKLIST = {
8
- "api.stripe.com" => [
9
- '05c0b3643694470a888c6e7feb5c9e24e823dc53',
10
- ],
11
- "revoked.stripe.com" => [
12
- '5b7dc7fbc98d78bf76d4d4fa6f597a0c901fad5c',
13
- ]
14
- }
15
-
16
- # Preflight the SSL certificate presented by the backend. This isn't 100%
17
- # bulletproof, in that we're not actually validating the transport used to
18
- # communicate with Stripe, merely that the first attempt to does not use a
19
- # revoked certificate.
20
-
21
- # Unfortunately the interface to OpenSSL doesn't make it easy to check the
22
- # certificate before sending potentially sensitive data on the wire. This
23
- # approach raises the bar for an attacker significantly.
24
-
25
- def self.check_ssl_cert(uri, ca_file)
26
- uri = URI.parse(uri)
27
-
28
- sock = TCPSocket.new(uri.host, uri.port)
29
- ctx = OpenSSL::SSL::SSLContext.new
30
- ctx.set_params(:verify_mode => OpenSSL::SSL::VERIFY_PEER,
31
- :ca_file => ca_file)
32
-
33
- socket = OpenSSL::SSL::SSLSocket.new(sock, ctx)
34
- socket.connect
35
-
36
- certificate = socket.peer_cert.to_der
37
- fingerprint = Digest::SHA1.hexdigest(certificate)
38
-
39
- if blacklisted_certs = BLACKLIST[uri.host]
40
- if blacklisted_certs.include?(fingerprint)
41
- raise APIConnectionError.new(
42
- "Invalid server certificate. You tried to connect to a server that" +
43
- "has a revoked SSL certificate, which means we cannot securely send" +
44
- "data to that server. Please email support@stripe.com if you need" +
45
- "help connecting to the correct API server."
46
- )
47
- end
48
- end
49
-
50
- socket.close
51
-
52
- return true
53
- end
54
- end
55
- end
@@ -1,18 +0,0 @@
1
- require File.expand_path('../../test_helper', __FILE__)
2
-
3
- module Stripe
4
-
5
- class CertificateBlacklistTest < Test::Unit::TestCase
6
- should "not trust revoked certificates" do
7
- assert_raises(Stripe::APIConnectionError) {
8
- Stripe::CertificateBlacklist.check_ssl_cert("https://revoked.stripe.com:444",
9
- Stripe::DEFAULT_CA_BUNDLE_PATH)
10
- }
11
- end
12
-
13
- should "trust api.stripe.com" do
14
- assert_true Stripe::CertificateBlacklist.check_ssl_cert("https://api.stripe.com",
15
- Stripe::DEFAULT_CA_BUNDLE_PATH)
16
- end
17
- end
18
- end