stripe 4.16.0 → 4.17.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 (55) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +1 -1
  3. data/CHANGELOG.md +3 -0
  4. data/README.md +11 -0
  5. data/VERSION +1 -1
  6. data/lib/stripe.rb +1 -0
  7. data/lib/stripe/account.rb +7 -2
  8. data/lib/stripe/api_operations/delete.rb +0 -2
  9. data/lib/stripe/api_operations/nested_resource.rb +4 -3
  10. data/lib/stripe/bank_account.rb +1 -1
  11. data/lib/stripe/capability.rb +26 -0
  12. data/lib/stripe/card.rb +1 -1
  13. data/lib/stripe/charge.rb +1 -1
  14. data/lib/stripe/checkout/session.rb +1 -1
  15. data/lib/stripe/coupon.rb +1 -1
  16. data/lib/stripe/credit_note.rb +2 -3
  17. data/lib/stripe/dispute.rb +3 -1
  18. data/lib/stripe/file_link.rb +1 -1
  19. data/lib/stripe/invoice.rb +12 -18
  20. data/lib/stripe/invoice_item.rb +1 -1
  21. data/lib/stripe/issuing/authorization.rb +1 -1
  22. data/lib/stripe/issuing/card.rb +1 -1
  23. data/lib/stripe/issuing/cardholder.rb +1 -1
  24. data/lib/stripe/issuing/dispute.rb +1 -1
  25. data/lib/stripe/issuing/transaction.rb +1 -1
  26. data/lib/stripe/order.rb +1 -1
  27. data/lib/stripe/payment_method.rb +3 -5
  28. data/lib/stripe/payout.rb +6 -4
  29. data/lib/stripe/product.rb +2 -2
  30. data/lib/stripe/radar/value_list.rb +1 -1
  31. data/lib/stripe/radar/value_list_item.rb +1 -1
  32. data/lib/stripe/recipient.rb +1 -1
  33. data/lib/stripe/reporting/report_run.rb +1 -1
  34. data/lib/stripe/reporting/report_type.rb +1 -1
  35. data/lib/stripe/sigma/scheduled_query_run.rb +1 -1
  36. data/lib/stripe/sku.rb +2 -2
  37. data/lib/stripe/source.rb +3 -3
  38. data/lib/stripe/subscription_item.rb +1 -1
  39. data/lib/stripe/subscription_schedule.rb +2 -2
  40. data/lib/stripe/tax_id.rb +1 -1
  41. data/lib/stripe/tax_rate.rb +1 -1
  42. data/lib/stripe/terminal/connection_token.rb +1 -1
  43. data/lib/stripe/terminal/location.rb +1 -1
  44. data/lib/stripe/terminal/reader.rb +1 -1
  45. data/lib/stripe/topup.rb +4 -4
  46. data/lib/stripe/transfer.rb +1 -1
  47. data/lib/stripe/usage_record.rb +2 -2
  48. data/lib/stripe/util.rb +3 -0
  49. data/lib/stripe/version.rb +1 -1
  50. data/lib/stripe/webhook_endpoint.rb +1 -1
  51. data/test/stripe/account_test.rb +34 -0
  52. data/test/stripe/api_resource_test.rb +1 -1
  53. data/test/stripe/capability_test.rb +45 -0
  54. data/test/test_helper.rb +1 -1
  55. metadata +5 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: '0934383f23cd5a8cf8c5b7f3ff4250a6921aac0e318c0444fc882430a2421e42'
4
- data.tar.gz: f9f84de78f36c63215df15859cdbb46fab395fd34548eabee1d47431f71c4017
3
+ metadata.gz: 8d3a140d2d3cb343cb427df5438201a04e82a8eb71cb352241955e4ae70ca6c3
4
+ data.tar.gz: d6bac1ffd1f4b9b5210bdd684b443fd6c12f1cc8084a854e728c8893f1dc768f
5
5
  SHA512:
6
- metadata.gz: cc3cc8d160145bfe10b7b36f1d9e7210f061d0778b637784c3efac214699332abfaf2411f35e05807fc4f4e433ae2354301fe0335581fa9793b9280b4ae01af7
7
- data.tar.gz: 3983a67fb632d6388aea881a68999604a25ffeac73e55ebe88b477956d61ef43a85f9510c42926fc07dc9e7817e601d73cdc7760d155328d3340d815a23af5e5
6
+ metadata.gz: 2d88469f61576501ebe5e9795381aba16fa4452eae217c4721abe8159468a8489ad54a18e09384c337f3fdebae4a3e5e5d0ae100f3587c491c880472d4cdd7f3
7
+ data.tar.gz: 575ab9b320e2dd5642964ad6a0b125d6c28cac9cfaa98260bb86b4489369e5413531bf26a285b85dd68f2d5afbace0beabd754f967b4aaa9c295d6644bcab058
data/.travis.yml CHANGED
@@ -17,7 +17,7 @@ sudo: false
17
17
  env:
18
18
  global:
19
19
  # If changing this number, please also change it in `test/test_helper.rb`.
20
- - STRIPE_MOCK_VERSION=0.54.0
20
+ - STRIPE_MOCK_VERSION=0.56.0
21
21
 
22
22
  cache:
23
23
  directories:
data/CHANGELOG.md CHANGED
@@ -1,5 +1,8 @@
1
1
  # Changelog
2
2
 
3
+ ## 4.17.0 - 2019-05-14
4
+ * [#779](https://github.com/stripe/stripe-ruby/pull/779) Add support for the Capability resource and APIs
5
+
3
6
  ## 4.16.0 - 2019-04-24
4
7
  * [#760](https://github.com/stripe/stripe-ruby/pull/760) Add support for the `TaxRate` resource and APIs
5
8
 
data/README.md CHANGED
@@ -95,6 +95,17 @@ Stripe::Charge.retrieve(
95
95
  :stripe_version => "2018-02-28"
96
96
  }
97
97
  )
98
+
99
+ Stripe::Charge.retrieve(
100
+ {
101
+ id: 'ch_18atAXCdGbJFKhCuBAa4532Z',
102
+ expand: %w(balance_transaction)
103
+ },
104
+ {
105
+ stripe_version: '2018-02-28',
106
+ api_key: 'sk_test_...'
107
+ }
108
+ )
98
109
  ```
99
110
 
100
111
  ### Configuring a Client
data/VERSION CHANGED
@@ -1 +1 @@
1
- 4.16.0
1
+ 4.17.0
data/lib/stripe.rb CHANGED
@@ -47,6 +47,7 @@ require "stripe/balance_transaction"
47
47
  require "stripe/bank_account"
48
48
  require "stripe/bitcoin_receiver"
49
49
  require "stripe/bitcoin_transaction"
50
+ require "stripe/capability"
50
51
  require "stripe/card"
51
52
  require "stripe/charge"
52
53
  require "stripe/checkout/session"
@@ -14,6 +14,9 @@ module Stripe
14
14
  custom_method :reject, http_verb: :post
15
15
 
16
16
  save_nested_resource :external_account
17
+ nested_resource_class_methods :capability,
18
+ operations: %i[retrieve update list],
19
+ resource_plural: "capabilities"
17
20
  nested_resource_class_methods :external_account,
18
21
  operations: %i[create retrieve update delete list]
19
22
  nested_resource_class_methods :login_link, operations: %i[create]
@@ -48,12 +51,14 @@ module Stripe
48
51
  end
49
52
 
50
53
  def persons(params = {}, opts = {})
51
- resp, opts = request(:get, resource_url + "/persons", params, Util.normalize_opts(opts))
54
+ resp, opts = request(:get, resource_url + "/persons", params, opts)
52
55
  Util.convert_to_stripe_object(resp.data, opts)
53
56
  end
54
57
 
58
+ # We are not adding a helper for capabilities here as the Account object already has a
59
+ # capabilities property which is a hash and not the sub-list of capabilities.
60
+
55
61
  def reject(params = {}, opts = {})
56
- opts = Util.normalize_opts(opts)
57
62
  resp, opts = request(:post, resource_url + "/reject", params, opts)
58
63
  initialize_from(resp.data, opts)
59
64
  end
@@ -17,14 +17,12 @@ module Stripe
17
17
  # idempotency_key to be passed in the request headers, or for the
18
18
  # api_key to be overwritten. See {APIOperations::Request.request}.
19
19
  def delete(id, params = {}, opts = {})
20
- opts = Util.normalize_opts(opts)
21
20
  resp, opts = request(:delete, "#{resource_url}/#{id}", params, opts)
22
21
  Util.convert_to_stripe_object(resp.data, opts)
23
22
  end
24
23
  end
25
24
 
26
25
  def delete(params = {}, opts = {})
27
- opts = Util.normalize_opts(opts)
28
26
  resp, opts = request(:delete, resource_url, params, opts)
29
27
  initialize_from(resp.data, opts)
30
28
  end
@@ -10,8 +10,9 @@ module Stripe
10
10
  # methods `.create_reversal`, `.retrieve_reversal`, `.update_reversal`,
11
11
  # etc. all become available.
12
12
  module NestedResource
13
- def nested_resource_class_methods(resource, path: nil, operations: nil)
14
- path ||= "#{resource}s"
13
+ def nested_resource_class_methods(resource, path: nil, operations: nil, resource_plural: nil)
14
+ resource_plural ||= "#{resource}s"
15
+ path ||= resource_plural
15
16
  raise ArgumentError, "operations array required" if operations.nil?
16
17
 
17
18
  resource_url_method = :"#{resource}s_url"
@@ -48,7 +49,7 @@ module Stripe
48
49
  Util.convert_to_stripe_object(resp.data, opts)
49
50
  end
50
51
  when :list
51
- define_singleton_method(:"list_#{resource}s") do |id, params = {}, opts = {}|
52
+ define_singleton_method(:"list_#{resource_plural}") do |id, params = {}, opts = {}|
52
53
  url = send(resource_url_method, id)
53
54
  resp, opts = request(:get, url, params, opts)
54
55
  Util.convert_to_stripe_object(resp.data, opts)
@@ -2,9 +2,9 @@
2
2
 
3
3
  module Stripe
4
4
  class BankAccount < APIResource
5
- include Stripe::APIOperations::Save
6
5
  include Stripe::APIOperations::Delete
7
6
  extend Stripe::APIOperations::List
7
+ include Stripe::APIOperations::Save
8
8
 
9
9
  OBJECT_NAME = "bank_account".freeze
10
10
 
@@ -0,0 +1,26 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Stripe
4
+ class Capability < APIResource
5
+ extend Stripe::APIOperations::List
6
+ include Stripe::APIOperations::Save
7
+
8
+ OBJECT_NAME = "capability".freeze
9
+
10
+ def resource_url
11
+ if !respond_to?(:account) || account.nil?
12
+ raise NotImplementedError,
13
+ "Capabilities cannot be accessed without an account ID."
14
+ end
15
+ "#{Account.resource_url}/#{CGI.escape(account)}/capabilities/#{CGI.escape(id)}"
16
+ end
17
+
18
+ def self.retrieve(_id, _opts = {})
19
+ raise NotImplementedError, "Capabilities cannot be retrieved without an account ID. Retrieve a capability using account.retrieve_capability('acct_123', 'acap_123')"
20
+ end
21
+
22
+ def self.update(_id, _params = nil, _opts = nil)
23
+ raise NotImplementedError, "Capabilities cannot be updated without an account ID. Update a capability using `p = account.update_capability('acct_123', 'acap_123', params)"
24
+ end
25
+ end
26
+ end
data/lib/stripe/card.rb CHANGED
@@ -2,9 +2,9 @@
2
2
 
3
3
  module Stripe
4
4
  class Card < APIResource
5
- include Stripe::APIOperations::Save
6
5
  include Stripe::APIOperations::Delete
7
6
  extend Stripe::APIOperations::List
7
+ include Stripe::APIOperations::Save
8
8
 
9
9
  OBJECT_NAME = "card".freeze
10
10
 
data/lib/stripe/charge.rb CHANGED
@@ -2,8 +2,8 @@
2
2
 
3
3
  module Stripe
4
4
  class Charge < APIResource
5
- extend Stripe::APIOperations::List
6
5
  extend Stripe::APIOperations::Create
6
+ extend Stripe::APIOperations::List
7
7
  include Stripe::APIOperations::Save
8
8
 
9
9
  OBJECT_NAME = "charge".freeze
@@ -2,7 +2,7 @@
2
2
 
3
3
  module Stripe
4
4
  module Checkout
5
- class Session < Stripe::APIResource
5
+ class Session < APIResource
6
6
  extend Stripe::APIOperations::Create
7
7
 
8
8
  OBJECT_NAME = "checkout.session".freeze
data/lib/stripe/coupon.rb CHANGED
@@ -3,9 +3,9 @@
3
3
  module Stripe
4
4
  class Coupon < APIResource
5
5
  extend Stripe::APIOperations::Create
6
- include Stripe::APIOperations::Save
7
6
  include Stripe::APIOperations::Delete
8
7
  extend Stripe::APIOperations::List
8
+ include Stripe::APIOperations::Save
9
9
 
10
10
  OBJECT_NAME = "coupon".freeze
11
11
  end
@@ -2,17 +2,16 @@
2
2
 
3
3
  module Stripe
4
4
  class CreditNote < APIResource
5
+ extend Stripe::APIOperations::Create
5
6
  extend Stripe::APIOperations::List
6
7
  include Stripe::APIOperations::Save
7
- extend Stripe::APIOperations::Create
8
8
 
9
9
  OBJECT_NAME = "credit_note".freeze
10
10
 
11
11
  custom_method :void_credit_note, http_verb: :post, http_path: "void"
12
12
 
13
13
  def void_credit_note(params = {}, opts = {})
14
- url = resource_url + "/void"
15
- resp, opts = request(:post, url, params, opts)
14
+ resp, opts = request(:post, resource_url + "/void", params, opts)
16
15
  initialize_from(resp.data, opts)
17
16
  end
18
17
  end
@@ -10,12 +10,14 @@ module Stripe
10
10
  custom_method :close, http_verb: :post
11
11
 
12
12
  def close(params = {}, opts = {})
13
- resp, opts = request(:post, close_url, params, opts)
13
+ resp, opts = request(:post, resource_url + "/close", params, opts)
14
14
  initialize_from(resp.data, opts)
15
15
  end
16
16
 
17
17
  def close_url
18
18
  resource_url + "/close"
19
19
  end
20
+ extend Gem::Deprecate
21
+ deprecate :close_url, :none, 2019, 11
20
22
  end
21
23
  end
@@ -3,8 +3,8 @@
3
3
  module Stripe
4
4
  class FileLink < APIResource
5
5
  extend Stripe::APIOperations::Create
6
- include Stripe::APIOperations::Save
7
6
  extend Stripe::APIOperations::List
7
+ include Stripe::APIOperations::Save
8
8
 
9
9
  OBJECT_NAME = "file_link".freeze
10
10
  end
@@ -2,10 +2,10 @@
2
2
 
3
3
  module Stripe
4
4
  class Invoice < APIResource
5
+ extend Stripe::APIOperations::Create
6
+ include Stripe::APIOperations::Delete
5
7
  extend Stripe::APIOperations::List
6
8
  include Stripe::APIOperations::Save
7
- include Stripe::APIOperations::Delete
8
- extend Stripe::APIOperations::Create
9
9
 
10
10
  OBJECT_NAME = "invoice".freeze
11
11
 
@@ -16,39 +16,33 @@ module Stripe
16
16
  custom_method :void_invoice, http_verb: :post, http_path: "void"
17
17
 
18
18
  def finalize_invoice(params = {}, opts = {})
19
- url = resource_url + "/finalize"
20
- resp, opts = request(:post, url, params, opts)
19
+ resp, opts = request(:post, resource_url + "/finalize", params, opts)
21
20
  initialize_from(resp.data, opts)
22
21
  end
23
22
 
24
23
  def mark_uncollectible(params = {}, opts = {})
25
- url = resource_url + "/mark_uncollectible"
26
- resp, opts = request(:post, url, params, opts)
24
+ resp, opts = request(:post, resource_url + "/mark_uncollectible", params, opts)
27
25
  initialize_from(resp.data, opts)
28
26
  end
29
27
 
30
28
  def pay(params = {}, opts = {})
31
- url = resource_url + "/pay"
32
- resp, opts = request(:post, url, params, opts)
29
+ resp, opts = request(:post, resource_url + "/pay", params, opts)
33
30
  initialize_from(resp.data, opts)
34
31
  end
35
32
 
36
33
  def send_invoice(params = {}, opts = {})
37
- url = resource_url + "/send"
38
- resp, opts = request(:post, url, params, opts)
34
+ resp, opts = request(:post, resource_url + "/send", params, opts)
39
35
  initialize_from(resp.data, opts)
40
36
  end
41
37
 
42
- def self.upcoming(params, opts = {})
43
- url = resource_url + "/upcoming"
44
- resp, opts = request(:get, url, params, opts)
45
- Util.convert_to_stripe_object(resp.data, opts)
46
- end
47
-
48
38
  def void_invoice(params = {}, opts = {})
49
- url = resource_url + "/void"
50
- resp, opts = request(:post, url, params, opts)
39
+ resp, opts = request(:post, resource_url + "/void", params, opts)
51
40
  initialize_from(resp.data, opts)
52
41
  end
42
+
43
+ def self.upcoming(params, opts = {})
44
+ resp, opts = request(:get, resource_url + "/upcoming", params, opts)
45
+ Util.convert_to_stripe_object(resp.data, opts)
46
+ end
53
47
  end
54
48
  end
@@ -2,9 +2,9 @@
2
2
 
3
3
  module Stripe
4
4
  class InvoiceItem < APIResource
5
- extend Stripe::APIOperations::List
6
5
  extend Stripe::APIOperations::Create
7
6
  include Stripe::APIOperations::Delete
7
+ extend Stripe::APIOperations::List
8
8
  include Stripe::APIOperations::Save
9
9
 
10
10
  OBJECT_NAME = "invoiceitem".freeze
@@ -2,7 +2,7 @@
2
2
 
3
3
  module Stripe
4
4
  module Issuing
5
- class Authorization < Stripe::APIResource
5
+ class Authorization < APIResource
6
6
  extend Stripe::APIOperations::List
7
7
  include Stripe::APIOperations::Save
8
8
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  module Stripe
4
4
  module Issuing
5
- class Card < Stripe::APIResource
5
+ class Card < APIResource
6
6
  extend Stripe::APIOperations::Create
7
7
  extend Stripe::APIOperations::List
8
8
  include Stripe::APIOperations::Save
@@ -2,7 +2,7 @@
2
2
 
3
3
  module Stripe
4
4
  module Issuing
5
- class Cardholder < Stripe::APIResource
5
+ class Cardholder < APIResource
6
6
  extend Stripe::APIOperations::Create
7
7
  extend Stripe::APIOperations::List
8
8
  include Stripe::APIOperations::Save
@@ -2,7 +2,7 @@
2
2
 
3
3
  module Stripe
4
4
  module Issuing
5
- class Dispute < Stripe::APIResource
5
+ class Dispute < APIResource
6
6
  extend Stripe::APIOperations::Create
7
7
  extend Stripe::APIOperations::List
8
8
  include Stripe::APIOperations::Save
@@ -2,7 +2,7 @@
2
2
 
3
3
  module Stripe
4
4
  module Issuing
5
- class Transaction < Stripe::APIResource
5
+ class Transaction < APIResource
6
6
  extend Stripe::APIOperations::List
7
7
  include Stripe::APIOperations::Save
8
8
 
data/lib/stripe/order.rb CHANGED
@@ -2,8 +2,8 @@
2
2
 
3
3
  module Stripe
4
4
  class Order < APIResource
5
- extend Stripe::APIOperations::List
6
5
  extend Stripe::APIOperations::Create
6
+ extend Stripe::APIOperations::List
7
7
  include Stripe::APIOperations::Save
8
8
 
9
9
  OBJECT_NAME = "order".freeze
@@ -3,8 +3,8 @@
3
3
  module Stripe
4
4
  class PaymentMethod < APIResource
5
5
  extend Stripe::APIOperations::Create
6
- include Stripe::APIOperations::Save
7
6
  extend Stripe::APIOperations::List
7
+ include Stripe::APIOperations::Save
8
8
 
9
9
  OBJECT_NAME = "payment_method".freeze
10
10
 
@@ -12,14 +12,12 @@ module Stripe
12
12
  custom_method :detach, http_verb: :post
13
13
 
14
14
  def attach(params = {}, opts = {})
15
- url = resource_url + "/attach"
16
- resp, opts = request(:post, url, params, opts)
15
+ resp, opts = request(:post, resource_url + "/attach", params, opts)
17
16
  initialize_from(resp.data, opts)
18
17
  end
19
18
 
20
19
  def detach(params = {}, opts = {})
21
- url = resource_url + "/detach"
22
- resp, opts = request(:post, url, params, opts)
20
+ resp, opts = request(:post, resource_url + "/detach", params, opts)
23
21
  initialize_from(resp.data, opts)
24
22
  end
25
23
  end
data/lib/stripe/payout.rb CHANGED
@@ -2,21 +2,23 @@
2
2
 
3
3
  module Stripe
4
4
  class Payout < APIResource
5
- extend Stripe::APIOperations::List
6
5
  extend Stripe::APIOperations::Create
6
+ extend Stripe::APIOperations::List
7
7
  include Stripe::APIOperations::Save
8
8
 
9
9
  OBJECT_NAME = "payout".freeze
10
10
 
11
11
  custom_method :cancel, http_verb: :post
12
12
 
13
- def cancel
14
- resp, api_key = request(:post, cancel_url)
15
- initialize_from(resp.data, api_key)
13
+ def cancel(params = {}, opts = {})
14
+ resp, opts = request(:post, resource_url + "/cancel", params, opts)
15
+ initialize_from(resp.data, opts)
16
16
  end
17
17
 
18
18
  def cancel_url
19
19
  resource_url + "/cancel"
20
20
  end
21
+ extend Gem::Deprecate
22
+ deprecate :cancel_url, :none, 2019, 11
21
23
  end
22
24
  end
@@ -2,10 +2,10 @@
2
2
 
3
3
  module Stripe
4
4
  class Product < APIResource
5
- extend Stripe::APIOperations::List
6
5
  extend Stripe::APIOperations::Create
7
- include Stripe::APIOperations::Save
8
6
  include Stripe::APIOperations::Delete
7
+ extend Stripe::APIOperations::List
8
+ include Stripe::APIOperations::Save
9
9
 
10
10
  OBJECT_NAME = "product".freeze
11
11
  end
@@ -2,7 +2,7 @@
2
2
 
3
3
  module Stripe
4
4
  module Radar
5
- class ValueList < Stripe::APIResource
5
+ class ValueList < APIResource
6
6
  extend Stripe::APIOperations::Create
7
7
  include Stripe::APIOperations::Delete
8
8
  extend Stripe::APIOperations::List
@@ -2,7 +2,7 @@
2
2
 
3
3
  module Stripe
4
4
  module Radar
5
- class ValueListItem < Stripe::APIResource
5
+ class ValueListItem < APIResource
6
6
  extend Stripe::APIOperations::Create
7
7
  include Stripe::APIOperations::Delete
8
8
  extend Stripe::APIOperations::List
@@ -5,8 +5,8 @@ module Stripe
5
5
  class Recipient < APIResource
6
6
  extend Stripe::APIOperations::Create
7
7
  include Stripe::APIOperations::Delete
8
- include Stripe::APIOperations::Save
9
8
  extend Stripe::APIOperations::List
9
+ include Stripe::APIOperations::Save
10
10
 
11
11
  OBJECT_NAME = "recipient".freeze
12
12
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  module Stripe
4
4
  module Reporting
5
- class ReportRun < Stripe::APIResource
5
+ class ReportRun < APIResource
6
6
  extend Stripe::APIOperations::Create
7
7
  extend Stripe::APIOperations::List
8
8
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  module Stripe
4
4
  module Reporting
5
- class ReportType < Stripe::APIResource
5
+ class ReportType < APIResource
6
6
  extend Stripe::APIOperations::Create
7
7
  extend Stripe::APIOperations::List
8
8
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  module Stripe
4
4
  module Sigma
5
- class ScheduledQueryRun < Stripe::APIResource
5
+ class ScheduledQueryRun < APIResource
6
6
  extend Stripe::APIOperations::List
7
7
 
8
8
  OBJECT_NAME = "scheduled_query_run".freeze
data/lib/stripe/sku.rb CHANGED
@@ -2,10 +2,10 @@
2
2
 
3
3
  module Stripe
4
4
  class SKU < APIResource
5
- extend Stripe::APIOperations::List
6
5
  extend Stripe::APIOperations::Create
7
- include Stripe::APIOperations::Save
8
6
  include Stripe::APIOperations::Delete
7
+ extend Stripe::APIOperations::List
8
+ include Stripe::APIOperations::Save
9
9
 
10
10
  OBJECT_NAME = "sku".freeze
11
11
  end
data/lib/stripe/source.rb CHANGED
@@ -17,7 +17,7 @@ module Stripe
17
17
  end
18
18
 
19
19
  url = "#{Customer.resource_url}/#{CGI.escape(customer)}/sources/#{CGI.escape(id)}"
20
- resp, opts = request(:delete, url, params, Util.normalize_opts(opts))
20
+ resp, opts = request(:delete, url, params, opts)
21
21
  initialize_from(resp.data, opts)
22
22
  end
23
23
 
@@ -28,12 +28,12 @@ module Stripe
28
28
  deprecate :delete, "#detach", 2017, 10
29
29
 
30
30
  def source_transactions(params = {}, opts = {})
31
- resp, opts = request(:get, resource_url + "/source_transactions", params, Util.normalize_opts(opts))
31
+ resp, opts = request(:get, resource_url + "/source_transactions", params, opts)
32
32
  Util.convert_to_stripe_object(resp.data, opts)
33
33
  end
34
34
 
35
35
  def verify(params = {}, opts = {})
36
- resp, opts = request(:post, resource_url + "/verify", params, Util.normalize_opts(opts))
36
+ resp, opts = request(:post, resource_url + "/verify", params, opts)
37
37
  initialize_from(resp.data, opts)
38
38
  end
39
39
  end
@@ -10,7 +10,7 @@ module Stripe
10
10
  OBJECT_NAME = "subscription_item".freeze
11
11
 
12
12
  def usage_record_summaries(params = {}, opts = {})
13
- resp, opts = request(:get, resource_url + "/usage_record_summaries", params, Util.normalize_opts(opts))
13
+ resp, opts = request(:get, resource_url + "/usage_record_summaries", params, opts)
14
14
  Util.convert_to_stripe_object(resp.data, opts)
15
15
  end
16
16
  end
@@ -2,8 +2,8 @@
2
2
 
3
3
  module Stripe
4
4
  class SubscriptionSchedule < APIResource
5
- extend Stripe::APIOperations::List
6
5
  extend Stripe::APIOperations::Create
6
+ extend Stripe::APIOperations::List
7
7
  include Stripe::APIOperations::Save
8
8
  extend Stripe::APIOperations::NestedResource
9
9
 
@@ -28,7 +28,7 @@ module Stripe
28
28
  end
29
29
 
30
30
  def revisions(params = {}, opts = {})
31
- resp, opts = request(:get, resource_url + "/revisions", params, Util.normalize_opts(opts))
31
+ resp, opts = request(:get, resource_url + "/revisions", params, opts)
32
32
  Util.convert_to_stripe_object(resp.data, opts)
33
33
  end
34
34
  end
data/lib/stripe/tax_id.rb CHANGED
@@ -2,8 +2,8 @@
2
2
 
3
3
  module Stripe
4
4
  class TaxId < APIResource
5
- extend Stripe::APIOperations::List
6
5
  include Stripe::APIOperations::Delete
6
+ extend Stripe::APIOperations::List
7
7
 
8
8
  OBJECT_NAME = "tax_id".freeze
9
9
 
@@ -3,8 +3,8 @@
3
3
  module Stripe
4
4
  class TaxRate < APIResource
5
5
  extend Stripe::APIOperations::Create
6
- include Stripe::APIOperations::Save
7
6
  extend Stripe::APIOperations::List
7
+ include Stripe::APIOperations::Save
8
8
 
9
9
  OBJECT_NAME = "tax_rate".freeze
10
10
  end
@@ -2,7 +2,7 @@
2
2
 
3
3
  module Stripe
4
4
  module Terminal
5
- class ConnectionToken < Stripe::APIResource
5
+ class ConnectionToken < APIResource
6
6
  extend Stripe::APIOperations::Create
7
7
 
8
8
  OBJECT_NAME = "terminal.connection_token".freeze
@@ -2,7 +2,7 @@
2
2
 
3
3
  module Stripe
4
4
  module Terminal
5
- class Location < Stripe::APIResource
5
+ class Location < APIResource
6
6
  extend Stripe::APIOperations::Create
7
7
  include Stripe::APIOperations::Delete
8
8
  extend Stripe::APIOperations::List
@@ -2,7 +2,7 @@
2
2
 
3
3
  module Stripe
4
4
  module Terminal
5
- class Reader < Stripe::APIResource
5
+ class Reader < APIResource
6
6
  extend Stripe::APIOperations::Create
7
7
  include Stripe::APIOperations::Delete
8
8
  extend Stripe::APIOperations::List
data/lib/stripe/topup.rb CHANGED
@@ -2,17 +2,17 @@
2
2
 
3
3
  module Stripe
4
4
  class Topup < APIResource
5
- extend Stripe::APIOperations::List
6
5
  extend Stripe::APIOperations::Create
6
+ extend Stripe::APIOperations::List
7
7
  include Stripe::APIOperations::Save
8
8
 
9
9
  OBJECT_NAME = "topup".freeze
10
10
 
11
11
  custom_method :cancel, http_verb: :post
12
12
 
13
- def cancel
14
- resp, api_key = request(:post, resource_url + "/cancel")
15
- initialize_from(resp.data, api_key)
13
+ def cancel(params = {}, opts = {})
14
+ resp, opts = request(:post, resource_url + "/cancel", params, opts)
15
+ initialize_from(resp.data, opts)
16
16
  end
17
17
  end
18
18
  end
@@ -2,8 +2,8 @@
2
2
 
3
3
  module Stripe
4
4
  class Transfer < APIResource
5
- extend Stripe::APIOperations::List
6
5
  extend Stripe::APIOperations::Create
6
+ extend Stripe::APIOperations::List
7
7
  include Stripe::APIOperations::Save
8
8
  extend Stripe::APIOperations::NestedResource
9
9
 
@@ -2,13 +2,13 @@
2
2
 
3
3
  module Stripe
4
4
  class UsageRecord < APIResource
5
+ OBJECT_NAME = "usage_record".freeze
6
+
5
7
  def self.create(params = {}, opts = {})
6
8
  raise(ArgumentError, "Params must have a subscription_item key") unless params.key?(:subscription_item)
7
9
  req_params = params.clone.delete_if { |key, _value| key == :subscription_item }
8
10
  resp, opts = request(:post, "/v1/subscription_items/#{params[:subscription_item]}/usage_records", req_params, opts)
9
11
  Util.convert_to_stripe_object(resp.data, opts)
10
12
  end
11
-
12
- OBJECT_NAME = "usage_record".freeze
13
13
  end
14
14
  end
data/lib/stripe/util.rb CHANGED
@@ -56,6 +56,7 @@ module Stripe
56
56
  BankAccount::OBJECT_NAME => BankAccount,
57
57
  BitcoinReceiver::OBJECT_NAME => BitcoinReceiver,
58
58
  BitcoinTransaction::OBJECT_NAME => BitcoinTransaction,
59
+ Capability::OBJECT_NAME => Capability,
59
60
  Card::OBJECT_NAME => Card,
60
61
  Charge::OBJECT_NAME => Charge,
61
62
  Checkout::Session::OBJECT_NAME => Checkout::Session,
@@ -135,6 +136,8 @@ module Stripe
135
136
  # * +opts+ - Options for +StripeObject+ like an API key that will be reused
136
137
  # on subsequent API calls.
137
138
  def self.convert_to_stripe_object(data, opts = {})
139
+ opts = normalize_opts(opts)
140
+
138
141
  case data
139
142
  when Array
140
143
  data.map { |i| convert_to_stripe_object(i, opts) }
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Stripe
4
- VERSION = "4.16.0".freeze
4
+ VERSION = "4.17.0".freeze
5
5
  end
@@ -3,9 +3,9 @@
3
3
  module Stripe
4
4
  class WebhookEndpoint < APIResource
5
5
  extend Stripe::APIOperations::Create
6
- include Stripe::APIOperations::Save
7
6
  include Stripe::APIOperations::Delete
8
7
  extend Stripe::APIOperations::List
8
+ include Stripe::APIOperations::Save
9
9
 
10
10
  OBJECT_NAME = "webhook_endpoint".freeze
11
11
  end
@@ -266,6 +266,40 @@ module Stripe
266
266
  end
267
267
  end
268
268
 
269
+ context "#retrieve_capability" do
270
+ should "retrieve a capability" do
271
+ capability = Stripe::Account.retrieve_capability(
272
+ "acct_123",
273
+ "acap_123"
274
+ )
275
+ assert_requested :get, "#{Stripe.api_base}/v1/accounts/acct_123/capabilities/acap_123"
276
+ assert capability.is_a?(Stripe::Capability)
277
+ end
278
+ end
279
+
280
+ context "#update_capability" do
281
+ should "update a capability" do
282
+ capability = Stripe::Account.update_capability(
283
+ "acct_123",
284
+ "acap_123",
285
+ requested: true
286
+ )
287
+ assert_requested :post, "#{Stripe.api_base}/v1/accounts/acct_123/capabilities/acap_123"
288
+ assert capability.is_a?(Stripe::Capability)
289
+ end
290
+ end
291
+
292
+ context "#list_capabilities" do
293
+ should "list the account's external accounts" do
294
+ capabilities = Stripe::Account.list_capabilities(
295
+ "acct_123"
296
+ )
297
+ assert_requested :get, "#{Stripe.api_base}/v1/accounts/acct_123/capabilities"
298
+ assert capabilities.is_a?(Stripe::ListObject)
299
+ assert capabilities.data.is_a?(Array)
300
+ end
301
+ end
302
+
269
303
  context "#create_external_account" do
270
304
  should "create an external account" do
271
305
  external_account = Stripe::Account.create_external_account(
@@ -5,7 +5,7 @@ require ::File.expand_path("../../test_helper", __FILE__)
5
5
 
6
6
  module Stripe
7
7
  class ApiResourceTest < Test::Unit::TestCase
8
- class NestedTestAPIResource < Stripe::APIResource
8
+ class NestedTestAPIResource < APIResource
9
9
  save_nested_resource :external_account
10
10
  end
11
11
 
@@ -0,0 +1,45 @@
1
+ # frozen_string_literal: true
2
+
3
+ require ::File.expand_path("../../test_helper", __FILE__)
4
+
5
+ module Stripe
6
+ class CapabilityTest < Test::Unit::TestCase
7
+ context "#resource_url" do
8
+ should "return a resource URL" do
9
+ capability = Stripe::Capability.construct_from(
10
+ id: "acap_123",
11
+ account: "acct_123"
12
+ )
13
+ assert_equal "/v1/accounts/acct_123/capabilities/acap_123",
14
+ capability.resource_url
15
+ end
16
+
17
+ should "raise without an account" do
18
+ capability = Stripe::Capability.construct_from(id: "acap_123")
19
+ assert_raises NotImplementedError do
20
+ capability.resource_url
21
+ end
22
+ end
23
+ end
24
+
25
+ should "raise on #retrieve" do
26
+ assert_raises NotImplementedError do
27
+ Stripe::Capability.retrieve("acap_123")
28
+ end
29
+ end
30
+
31
+ should "raise on #update" do
32
+ assert_raises NotImplementedError do
33
+ Stripe::Capability.update("acap_123", {})
34
+ end
35
+ end
36
+
37
+ should "be saveable" do
38
+ capability = Stripe::Account.retrieve_capability("acct_123", "acap_123")
39
+ capability.requested = true
40
+ capability.save
41
+ assert_requested :post,
42
+ "#{Stripe.api_base}/v1/accounts/#{capability.account}/capabilities/#{capability.id}"
43
+ end
44
+ end
45
+ end
data/test/test_helper.rb CHANGED
@@ -17,7 +17,7 @@ require ::File.expand_path("../test_data", __FILE__)
17
17
  require ::File.expand_path("../stripe_mock", __FILE__)
18
18
 
19
19
  # If changing this number, please also change it in `.travis.yml`.
20
- MOCK_MINIMUM_VERSION = "0.54.0".freeze
20
+ MOCK_MINIMUM_VERSION = "0.56.0".freeze
21
21
  MOCK_PORT = Stripe::StripeMock.start
22
22
 
23
23
  # Disable all real network connections except those that are outgoing to
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: stripe
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.16.0
4
+ version: 4.17.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stripe
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-04-24 00:00:00.000000000 Z
11
+ date: 2019-05-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
@@ -81,6 +81,7 @@ files:
81
81
  - lib/stripe/bank_account.rb
82
82
  - lib/stripe/bitcoin_receiver.rb
83
83
  - lib/stripe/bitcoin_transaction.rb
84
+ - lib/stripe/capability.rb
84
85
  - lib/stripe/card.rb
85
86
  - lib/stripe/charge.rb
86
87
  - lib/stripe/checkout/session.rb
@@ -166,6 +167,7 @@ files:
166
167
  - test/stripe/application_fee_test.rb
167
168
  - test/stripe/balance_test.rb
168
169
  - test/stripe/bank_account_test.rb
170
+ - test/stripe/capability_test.rb
169
171
  - test/stripe/charge_test.rb
170
172
  - test/stripe/checkout/session_test.rb
171
173
  - test/stripe/country_spec_test.rb
@@ -272,6 +274,7 @@ test_files:
272
274
  - test/stripe/application_fee_test.rb
273
275
  - test/stripe/balance_test.rb
274
276
  - test/stripe/bank_account_test.rb
277
+ - test/stripe/capability_test.rb
275
278
  - test/stripe/charge_test.rb
276
279
  - test/stripe/checkout/session_test.rb
277
280
  - test/stripe/country_spec_test.rb