stripe 1.18.0 → 1.30.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.
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