stripe 4.9.0 → 5.1.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 (224) hide show
  1. checksums.yaml +4 -4
  2. data/.editorconfig +10 -0
  3. data/.rubocop.yml +28 -4
  4. data/.rubocop_todo.yml +11 -22
  5. data/.travis.yml +3 -6
  6. data/.vscode/extensions.json +7 -0
  7. data/.vscode/settings.json +8 -0
  8. data/CHANGELOG.md +102 -2
  9. data/Gemfile +2 -10
  10. data/README.md +96 -40
  11. data/Rakefile +8 -7
  12. data/VERSION +1 -1
  13. data/lib/stripe.rb +64 -85
  14. data/lib/stripe/api_operations/delete.rb +23 -1
  15. data/lib/stripe/api_operations/list.rb +0 -6
  16. data/lib/stripe/api_operations/nested_resource.rb +14 -7
  17. data/lib/stripe/api_operations/request.rb +3 -7
  18. data/lib/stripe/api_operations/save.rb +1 -3
  19. data/lib/stripe/api_resource.rb +50 -2
  20. data/lib/stripe/connection_manager.rb +141 -0
  21. data/lib/stripe/error_object.rb +94 -0
  22. data/lib/stripe/errors.rb +22 -9
  23. data/lib/stripe/list_object.rb +11 -5
  24. data/lib/stripe/multipart_encoder.rb +131 -0
  25. data/lib/stripe/object_types.rb +94 -0
  26. data/lib/stripe/resources.rb +77 -0
  27. data/lib/stripe/{account.rb → resources/account.rb} +49 -27
  28. data/lib/stripe/{account_link.rb → resources/account_link.rb} +1 -1
  29. data/lib/stripe/resources/alipay_account.rb +34 -0
  30. data/lib/stripe/{apple_pay_domain.rb → resources/apple_pay_domain.rb} +1 -1
  31. data/lib/stripe/resources/application_fee.rb +13 -0
  32. data/lib/stripe/resources/application_fee_refund.rb +30 -0
  33. data/lib/stripe/{balance.rb → resources/balance.rb} +1 -1
  34. data/lib/stripe/{balance_transaction.rb → resources/balance_transaction.rb} +1 -5
  35. data/lib/stripe/{bank_account.rb → resources/bank_account.rb} +14 -4
  36. data/lib/stripe/{bitcoin_receiver.rb → resources/bitcoin_receiver.rb} +3 -3
  37. data/lib/stripe/{bitcoin_transaction.rb → resources/bitcoin_transaction.rb} +1 -1
  38. data/lib/stripe/resources/capability.rb +33 -0
  39. data/lib/stripe/{card.rb → resources/card.rb} +12 -4
  40. data/lib/stripe/resources/charge.rb +22 -0
  41. data/lib/stripe/{checkout → resources/checkout}/session.rb +2 -2
  42. data/lib/stripe/{country_spec.rb → resources/country_spec.rb} +1 -1
  43. data/lib/stripe/{coupon.rb → resources/coupon.rb} +2 -2
  44. data/lib/stripe/resources/credit_note.rb +22 -0
  45. data/lib/stripe/resources/customer.rb +35 -0
  46. data/lib/stripe/resources/customer_balance_transaction.rb +30 -0
  47. data/lib/stripe/resources/discount.rb +7 -0
  48. data/lib/stripe/{dispute.rb → resources/dispute.rb} +9 -7
  49. data/lib/stripe/{ephemeral_key.rb → resources/ephemeral_key.rb} +5 -2
  50. data/lib/stripe/{event.rb → resources/event.rb} +1 -1
  51. data/lib/stripe/{exchange_rate.rb → resources/exchange_rate.rb} +1 -1
  52. data/lib/stripe/{file.rb → resources/file.rb} +8 -11
  53. data/lib/stripe/{file_link.rb → resources/file_link.rb} +2 -2
  54. data/lib/stripe/resources/invoice.rb +73 -0
  55. data/lib/stripe/{invoice_item.rb → resources/invoice_item.rb} +2 -2
  56. data/lib/stripe/{invoice_line_item.rb → resources/invoice_line_item.rb} +1 -1
  57. data/lib/stripe/resources/issuing/authorization.rb +33 -0
  58. data/lib/stripe/resources/issuing/card.rb +24 -0
  59. data/lib/stripe/{issuing → resources/issuing}/card_details.rb +1 -1
  60. data/lib/stripe/{issuing → resources/issuing}/cardholder.rb +2 -2
  61. data/lib/stripe/{issuing → resources/issuing}/dispute.rb +2 -2
  62. data/lib/stripe/{issuing → resources/issuing}/transaction.rb +2 -2
  63. data/lib/stripe/resources/login_link.rb +14 -0
  64. data/lib/stripe/resources/order.rb +32 -0
  65. data/lib/stripe/{order_return.rb → resources/order_return.rb} +1 -1
  66. data/lib/stripe/resources/payment_intent.rb +42 -0
  67. data/lib/stripe/resources/payment_method.rb +32 -0
  68. data/lib/stripe/resources/payout.rb +22 -0
  69. data/lib/stripe/{person.rb → resources/person.rb} +8 -3
  70. data/lib/stripe/{plan.rb → resources/plan.rb} +1 -1
  71. data/lib/stripe/{product.rb → resources/product.rb} +3 -3
  72. data/lib/stripe/resources/radar/early_fraud_warning.rb +11 -0
  73. data/lib/stripe/{radar → resources/radar}/value_list.rb +2 -2
  74. data/lib/stripe/{radar → resources/radar}/value_list_item.rb +2 -2
  75. data/lib/stripe/{recipient.rb → resources/recipient.rb} +2 -6
  76. data/lib/stripe/{recipient_transfer.rb → resources/recipient_transfer.rb} +1 -1
  77. data/lib/stripe/{refund.rb → resources/refund.rb} +1 -1
  78. data/lib/stripe/{reporting → resources/reporting}/report_run.rb +2 -2
  79. data/lib/stripe/{reporting → resources/reporting}/report_type.rb +2 -2
  80. data/lib/stripe/resources/reversal.rb +29 -0
  81. data/lib/stripe/resources/review.rb +20 -0
  82. data/lib/stripe/resources/setup_intent.rb +32 -0
  83. data/lib/stripe/{sigma → resources/sigma}/scheduled_query_run.rb +2 -2
  84. data/lib/stripe/{sku.rb → resources/sku.rb} +3 -3
  85. data/lib/stripe/{source.rb → resources/source.rb} +17 -15
  86. data/lib/stripe/{source_transaction.rb → resources/source_transaction.rb} +1 -1
  87. data/lib/stripe/resources/subscription.rb +25 -0
  88. data/lib/stripe/{subscription_item.rb → resources/subscription_item.rb} +5 -2
  89. data/lib/stripe/resources/subscription_schedule.rb +32 -0
  90. data/lib/stripe/resources/tax_id.rb +26 -0
  91. data/lib/stripe/resources/tax_rate.rb +11 -0
  92. data/lib/stripe/{terminal → resources/terminal}/connection_token.rb +2 -2
  93. data/lib/stripe/{terminal → resources/terminal}/location.rb +3 -2
  94. data/lib/stripe/{terminal → resources/terminal}/reader.rb +3 -2
  95. data/lib/stripe/{three_d_secure.rb → resources/three_d_secure.rb} +1 -1
  96. data/lib/stripe/{token.rb → resources/token.rb} +1 -1
  97. data/lib/stripe/resources/topup.rb +22 -0
  98. data/lib/stripe/resources/transfer.rb +26 -0
  99. data/lib/stripe/resources/usage_record.rb +7 -0
  100. data/lib/stripe/{usage_record_summary.rb → resources/usage_record_summary.rb} +1 -1
  101. data/lib/stripe/{webhook_endpoint.rb → resources/webhook_endpoint.rb} +2 -2
  102. data/lib/stripe/singleton_api_resource.rb +3 -1
  103. data/lib/stripe/stripe_client.rb +347 -218
  104. data/lib/stripe/stripe_object.rb +72 -59
  105. data/lib/stripe/stripe_response.rb +53 -21
  106. data/lib/stripe/util.rb +54 -109
  107. data/lib/stripe/version.rb +1 -1
  108. data/lib/stripe/webhook.rb +5 -3
  109. data/stripe.gemspec +14 -5
  110. data/test/stripe/account_link_test.rb +1 -1
  111. data/test/stripe/account_test.rb +193 -32
  112. data/test/stripe/alipay_account_test.rb +1 -1
  113. data/test/stripe/api_operations_test.rb +3 -4
  114. data/test/stripe/api_resource_test.rb +119 -30
  115. data/test/stripe/apple_pay_domain_test.rb +18 -5
  116. data/test/stripe/application_fee_refund_test.rb +1 -1
  117. data/test/stripe/application_fee_test.rb +45 -1
  118. data/test/stripe/balance_test.rb +1 -1
  119. data/test/stripe/balance_transaction_test.rb +20 -0
  120. data/test/stripe/bank_account_test.rb +1 -1
  121. data/test/stripe/capability_test.rb +45 -0
  122. data/test/stripe/charge_test.rb +13 -8
  123. data/test/stripe/checkout/session_test.rb +7 -1
  124. data/test/stripe/connection_manager_test.rb +138 -0
  125. data/test/stripe/country_spec_test.rb +1 -1
  126. data/test/stripe/coupon_test.rb +16 -6
  127. data/test/stripe/credit_note_test.rb +61 -0
  128. data/test/stripe/customer_balance_transaction_test.rb +37 -0
  129. data/test/stripe/customer_card_test.rb +1 -1
  130. data/test/stripe/customer_test.rb +151 -40
  131. data/test/stripe/dispute_test.rb +10 -1
  132. data/test/stripe/ephemeral_key_test.rb +8 -1
  133. data/test/stripe/errors_test.rb +30 -9
  134. data/test/stripe/exchange_rate_test.rb +1 -1
  135. data/test/stripe/file_link_test.rb +1 -1
  136. data/test/stripe/file_test.rb +19 -5
  137. data/test/stripe/invoice_item_test.rb +18 -7
  138. data/test/stripe/invoice_line_item_test.rb +1 -1
  139. data/test/stripe/invoice_test.rb +77 -9
  140. data/test/stripe/issuing/authorization_test.rb +33 -11
  141. data/test/stripe/issuing/card_test.rb +15 -6
  142. data/test/stripe/issuing/cardholder_test.rb +1 -1
  143. data/test/stripe/issuing/dispute_test.rb +1 -1
  144. data/test/stripe/issuing/transaction_test.rb +1 -1
  145. data/test/stripe/list_object_test.rb +1 -17
  146. data/test/stripe/login_link_test.rb +2 -2
  147. data/test/stripe/multipart_encoder_test.rb +130 -0
  148. data/test/stripe/oauth_test.rb +1 -1
  149. data/test/stripe/order_return_test.rb +1 -1
  150. data/test/stripe/order_test.rb +28 -3
  151. data/test/stripe/payment_intent_test.rb +31 -4
  152. data/test/stripe/payment_method_test.rb +84 -0
  153. data/test/stripe/payout_test.rb +8 -1
  154. data/test/stripe/person_test.rb +1 -1
  155. data/test/stripe/plan_test.rb +26 -20
  156. data/test/stripe/product_test.rb +16 -6
  157. data/test/stripe/radar/early_fraud_warning_test.rb +22 -0
  158. data/test/stripe/radar/value_list_item_test.rb +16 -6
  159. data/test/stripe/radar/value_list_test.rb +16 -6
  160. data/test/stripe/recipient_test.rb +18 -5
  161. data/test/stripe/refund_test.rb +1 -1
  162. data/test/stripe/reporting/report_run_test.rb +1 -1
  163. data/test/stripe/reporting/report_type_test.rb +1 -1
  164. data/test/stripe/reversal_test.rb +1 -1
  165. data/test/stripe/review_test.rb +1 -1
  166. data/test/stripe/setup_intent_test.rb +84 -0
  167. data/test/stripe/sigma/scheduled_query_run_test.rb +1 -1
  168. data/test/stripe/sku_test.rb +16 -6
  169. data/test/stripe/source_test.rb +14 -19
  170. data/test/stripe/source_transaction_test.rb +1 -1
  171. data/test/stripe/stripe_client_test.rb +242 -26
  172. data/test/stripe/stripe_object_test.rb +8 -36
  173. data/test/stripe/stripe_response_test.rb +71 -25
  174. data/test/stripe/subscription_item_test.rb +28 -6
  175. data/test/stripe/subscription_schedule_test.rb +19 -1
  176. data/test/stripe/subscription_test.rb +29 -9
  177. data/test/stripe/tax_id_test.rb +31 -0
  178. data/test/stripe/tax_rate_test.rb +43 -0
  179. data/test/stripe/terminal/connection_token_test.rb +1 -1
  180. data/test/stripe/terminal/location_test.rb +18 -1
  181. data/test/stripe/terminal/reader_test.rb +18 -1
  182. data/test/stripe/three_d_secure_test.rb +1 -1
  183. data/test/stripe/topup_test.rb +9 -1
  184. data/test/stripe/transfer_test.rb +46 -1
  185. data/test/stripe/usage_record_summary_test.rb +1 -1
  186. data/test/stripe/util_test.rb +1 -1
  187. data/test/stripe/webhook_endpoint_test.rb +18 -1
  188. data/test/stripe/webhook_test.rb +4 -4
  189. data/test/stripe_mock.rb +4 -3
  190. data/test/stripe_test.rb +1 -14
  191. data/test/test_helper.rb +14 -11
  192. metadata +117 -125
  193. data/lib/stripe/alipay_account.rb +0 -27
  194. data/lib/stripe/application_fee.rb +0 -23
  195. data/lib/stripe/application_fee_refund.rb +0 -22
  196. data/lib/stripe/charge.rb +0 -84
  197. data/lib/stripe/customer.rb +0 -90
  198. data/lib/stripe/invoice.rb +0 -48
  199. data/lib/stripe/issuer_fraud_record.rb +0 -9
  200. data/lib/stripe/issuing/authorization.rb +0 -22
  201. data/lib/stripe/issuing/card.rb +0 -18
  202. data/lib/stripe/login_link.rb +0 -11
  203. data/lib/stripe/order.rb +0 -31
  204. data/lib/stripe/payment_intent.rb +0 -26
  205. data/lib/stripe/payout.rb +0 -20
  206. data/lib/stripe/reversal.rb +0 -22
  207. data/lib/stripe/review.rb +0 -14
  208. data/lib/stripe/subscription.rb +0 -25
  209. data/lib/stripe/subscription_schedule.rb +0 -32
  210. data/lib/stripe/subscription_schedule_revision.rb +0 -25
  211. data/lib/stripe/topup.rb +0 -16
  212. data/lib/stripe/transfer.rb +0 -23
  213. data/lib/stripe/usage_record.rb +0 -14
  214. data/test/stripe/account_external_accounts_operations_test.rb +0 -69
  215. data/test/stripe/account_login_links_operations_test.rb +0 -21
  216. data/test/stripe/account_persons_operations_test.rb +0 -70
  217. data/test/stripe/application_fee_refunds_operations_test.rb +0 -56
  218. data/test/stripe/customer_sources_operations_test.rb +0 -64
  219. data/test/stripe/file_upload_test.rb +0 -76
  220. data/test/stripe/issuer_fraud_record_test.rb +0 -20
  221. data/test/stripe/subscription_schedule_revision_test.rb +0 -37
  222. data/test/stripe/subscription_schedule_revisions_operations_test.rb +0 -35
  223. data/test/stripe/transfer_reversals_operations_test.rb +0 -57
  224. data/test/stripe/usage_record_test.rb +0 -28
@@ -2,11 +2,11 @@
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
 
9
- OBJECT_NAME = "reporting.report_type".freeze
9
+ OBJECT_NAME = "reporting.report_type"
10
10
  end
11
11
  end
12
12
  end
@@ -0,0 +1,29 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Stripe
4
+ class Reversal < APIResource
5
+ extend Stripe::APIOperations::List
6
+ include Stripe::APIOperations::Save
7
+
8
+ OBJECT_NAME = "transfer_reversal"
9
+
10
+ def resource_url
11
+ "#{Transfer.resource_url}/#{CGI.escape(transfer)}/reversals" \
12
+ "/#{CGI.escape(id)}"
13
+ end
14
+
15
+ def self.update(_id, _params = nil, _opts = nil)
16
+ raise NotImplementedError,
17
+ "Reversals cannot be updated without a transfer ID. Update a " \
18
+ "reversal using `r = Transfer.update_reversal('transfer_id', " \
19
+ "'reversal_id', update_params)`"
20
+ end
21
+
22
+ def self.retrieve(_id, _opts = {})
23
+ raise NotImplementedError,
24
+ "Reversals cannot be retrieved without a transfer ID. Retrieve " \
25
+ "a reversal using `Transfer.retrieve_reversal('transfer_id', " \
26
+ "'reversal_id')`"
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Stripe
4
+ class Review < APIResource
5
+ extend Stripe::APIOperations::List
6
+
7
+ OBJECT_NAME = "review"
8
+
9
+ custom_method :approve, http_verb: :post
10
+
11
+ def approve(params = {}, opts = {})
12
+ request_stripe_object(
13
+ method: :post,
14
+ path: resource_url + "/approve",
15
+ params: params,
16
+ opts: opts
17
+ )
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,32 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Stripe
4
+ class SetupIntent < APIResource
5
+ extend Stripe::APIOperations::Create
6
+ extend Stripe::APIOperations::List
7
+ include Stripe::APIOperations::Save
8
+
9
+ OBJECT_NAME = "setup_intent"
10
+
11
+ custom_method :cancel, http_verb: :post
12
+ custom_method :confirm, http_verb: :post
13
+
14
+ def cancel(params = {}, opts = {})
15
+ request_stripe_object(
16
+ method: :post,
17
+ path: resource_url + "/cancel",
18
+ params: params,
19
+ opts: opts
20
+ )
21
+ end
22
+
23
+ def confirm(params = {}, opts = {})
24
+ request_stripe_object(
25
+ method: :post,
26
+ path: resource_url + "/confirm",
27
+ params: params,
28
+ opts: opts
29
+ )
30
+ end
31
+ end
32
+ end
@@ -2,10 +2,10 @@
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
- OBJECT_NAME = "scheduled_query_run".freeze
8
+ OBJECT_NAME = "scheduled_query_run"
9
9
 
10
10
  def self.resource_url
11
11
  "/v1/sigma/scheduled_query_runs"
@@ -2,11 +2,11 @@
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
- OBJECT_NAME = "sku".freeze
10
+ OBJECT_NAME = "sku"
11
11
  end
12
12
  end
@@ -5,7 +5,18 @@ module Stripe
5
5
  extend Stripe::APIOperations::Create
6
6
  include Stripe::APIOperations::Save
7
7
 
8
- OBJECT_NAME = "source".freeze
8
+ OBJECT_NAME = "source"
9
+
10
+ custom_method :verify, http_verb: :post
11
+
12
+ def verify(params = {}, opts = {})
13
+ request_stripe_object(
14
+ method: :post,
15
+ path: resource_url + "/verify",
16
+ params: params,
17
+ opts: opts
18
+ )
19
+ end
9
20
 
10
21
  def detach(params = {}, opts = {})
11
22
  if !respond_to?(:customer) || customer.nil? || customer.empty?
@@ -14,25 +25,16 @@ module Stripe
14
25
  "to a customer object."
15
26
  end
16
27
 
17
- url = "#{Customer.resource_url}/#{CGI.escape(customer)}/sources/#{CGI.escape(id)}"
18
- resp, opts = request(:delete, url, params, Util.normalize_opts(opts))
28
+ url = "#{Customer.resource_url}/#{CGI.escape(customer)}/sources" \
29
+ "/#{CGI.escape(id)}"
30
+ resp, opts = request(:delete, url, params, opts)
19
31
  initialize_from(resp.data, opts)
20
32
  end
21
33
 
22
- def delete(params = {}, opts = {})
23
- detach(params, opts)
24
- end
25
- extend Gem::Deprecate
26
- deprecate :delete, "#detach", 2017, 10
27
-
28
34
  def source_transactions(params = {}, opts = {})
29
- resp, opts = request(:get, resource_url + "/source_transactions", params, Util.normalize_opts(opts))
35
+ resp, opts = request(:get, resource_url + "/source_transactions", params,
36
+ opts)
30
37
  Util.convert_to_stripe_object(resp.data, opts)
31
38
  end
32
-
33
- def verify(params = {}, opts = {})
34
- resp, opts = request(:post, resource_url + "/verify", params, Util.normalize_opts(opts))
35
- initialize_from(resp.data, opts)
36
- end
37
39
  end
38
40
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Stripe
4
4
  class SourceTransaction < StripeObject
5
- OBJECT_NAME = "source_transaction".freeze
5
+ OBJECT_NAME = "source_transaction"
6
6
  end
7
7
  end
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Stripe
4
+ class Subscription < APIResource
5
+ extend Stripe::APIOperations::Create
6
+ include Stripe::APIOperations::Delete
7
+ extend Stripe::APIOperations::List
8
+ include Stripe::APIOperations::Save
9
+
10
+ OBJECT_NAME = "subscription"
11
+
12
+ custom_method :delete_discount, http_verb: :delete, http_path: "discount"
13
+
14
+ def delete_discount(params = {}, opts = {})
15
+ request_stripe_object(
16
+ method: :delete,
17
+ path: resource_url + "/discount",
18
+ params: params,
19
+ opts: opts
20
+ )
21
+ end
22
+
23
+ save_nested_resource :source
24
+ end
25
+ end
@@ -6,11 +6,14 @@ module Stripe
6
6
  include Stripe::APIOperations::Delete
7
7
  extend Stripe::APIOperations::List
8
8
  include Stripe::APIOperations::Save
9
+ extend Stripe::APIOperations::NestedResource
9
10
 
10
- OBJECT_NAME = "subscription_item".freeze
11
+ OBJECT_NAME = "subscription_item"
12
+
13
+ nested_resource_class_methods :usage_record, operations: %i[create]
11
14
 
12
15
  def usage_record_summaries(params = {}, opts = {})
13
- resp, opts = request(:get, resource_url + "/usage_record_summaries", params, Util.normalize_opts(opts))
16
+ resp, opts = request(:get, resource_url + "/usage_record_summaries", params, opts)
14
17
  Util.convert_to_stripe_object(resp.data, opts)
15
18
  end
16
19
  end
@@ -0,0 +1,32 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Stripe
4
+ class SubscriptionSchedule < APIResource
5
+ extend Stripe::APIOperations::Create
6
+ extend Stripe::APIOperations::List
7
+ include Stripe::APIOperations::Save
8
+
9
+ OBJECT_NAME = "subscription_schedule"
10
+
11
+ custom_method :cancel, http_verb: :post
12
+ custom_method :release, http_verb: :post
13
+
14
+ def cancel(params = {}, opts = {})
15
+ request_stripe_object(
16
+ method: :post,
17
+ path: resource_url + "/cancel",
18
+ params: params,
19
+ opts: opts
20
+ )
21
+ end
22
+
23
+ def release(params = {}, opts = {})
24
+ request_stripe_object(
25
+ method: :post,
26
+ path: resource_url + "/release",
27
+ params: params,
28
+ opts: opts
29
+ )
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,26 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Stripe
4
+ class TaxId < APIResource
5
+ include Stripe::APIOperations::Delete
6
+ extend Stripe::APIOperations::List
7
+
8
+ OBJECT_NAME = "tax_id"
9
+
10
+ def resource_url
11
+ if !respond_to?(:customer) || customer.nil?
12
+ raise NotImplementedError,
13
+ "Tax IDs cannot be accessed without a customer ID."
14
+ end
15
+ "#{Customer.resource_url}/#{CGI.escape(customer)}/tax_ids" \
16
+ "/#{CGI.escape(id)}"
17
+ end
18
+
19
+ def self.retrieve(_id, _opts = {})
20
+ raise NotImplementedError,
21
+ "Tax IDs cannot be retrieved without a customer ID. Retrieve a " \
22
+ "tax ID using `Customer.retrieve_tax_id('customer_id', " \
23
+ "'tax_id_id')`"
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Stripe
4
+ class TaxRate < APIResource
5
+ extend Stripe::APIOperations::Create
6
+ extend Stripe::APIOperations::List
7
+ include Stripe::APIOperations::Save
8
+
9
+ OBJECT_NAME = "tax_rate"
10
+ end
11
+ end
@@ -2,10 +2,10 @@
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
- OBJECT_NAME = "terminal.connection_token".freeze
8
+ OBJECT_NAME = "terminal.connection_token"
9
9
  end
10
10
  end
11
11
  end
@@ -2,12 +2,13 @@
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
+ include Stripe::APIOperations::Delete
7
8
  extend Stripe::APIOperations::List
8
9
  include Stripe::APIOperations::Save
9
10
 
10
- OBJECT_NAME = "terminal.location".freeze
11
+ OBJECT_NAME = "terminal.location"
11
12
  end
12
13
  end
13
14
  end
@@ -2,12 +2,13 @@
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
+ include Stripe::APIOperations::Delete
7
8
  extend Stripe::APIOperations::List
8
9
  include Stripe::APIOperations::Save
9
10
 
10
- OBJECT_NAME = "terminal.reader".freeze
11
+ OBJECT_NAME = "terminal.reader"
11
12
  end
12
13
  end
13
14
  end
@@ -4,7 +4,7 @@ module Stripe
4
4
  class ThreeDSecure < APIResource
5
5
  extend Stripe::APIOperations::Create
6
6
 
7
- OBJECT_NAME = "three_d_secure".freeze
7
+ OBJECT_NAME = "three_d_secure"
8
8
 
9
9
  def self.resource_url
10
10
  "/v1/3d_secure"
@@ -4,6 +4,6 @@ module Stripe
4
4
  class Token < APIResource
5
5
  extend Stripe::APIOperations::Create
6
6
 
7
- OBJECT_NAME = "token".freeze
7
+ OBJECT_NAME = "token"
8
8
  end
9
9
  end
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Stripe
4
+ class Topup < APIResource
5
+ extend Stripe::APIOperations::Create
6
+ extend Stripe::APIOperations::List
7
+ include Stripe::APIOperations::Save
8
+
9
+ OBJECT_NAME = "topup"
10
+
11
+ custom_method :cancel, http_verb: :post
12
+
13
+ def cancel(params = {}, opts = {})
14
+ request_stripe_object(
15
+ method: :post,
16
+ path: resource_url + "/cancel",
17
+ params: params,
18
+ opts: opts
19
+ )
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,26 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Stripe
4
+ class Transfer < APIResource
5
+ extend Stripe::APIOperations::Create
6
+ extend Stripe::APIOperations::List
7
+ include Stripe::APIOperations::Save
8
+ extend Stripe::APIOperations::NestedResource
9
+
10
+ OBJECT_NAME = "transfer"
11
+
12
+ custom_method :cancel, http_verb: :post
13
+
14
+ nested_resource_class_methods :reversal,
15
+ operations: %i[create retrieve update list]
16
+
17
+ def cancel(params = {}, opts = {})
18
+ request_stripe_object(
19
+ method: :post,
20
+ path: resource_url + "/cancel",
21
+ params: params,
22
+ opts: opts
23
+ )
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Stripe
4
+ class UsageRecord < APIResource
5
+ OBJECT_NAME = "usage_record"
6
+ end
7
+ end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Stripe
4
4
  class UsageRecordSummary < StripeObject
5
- OBJECT_NAME = "usage_record_summary".freeze
5
+ OBJECT_NAME = "usage_record_summary"
6
6
  end
7
7
  end
@@ -3,10 +3,10 @@
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
- OBJECT_NAME = "webhook_endpoint".freeze
10
+ OBJECT_NAME = "webhook_endpoint"
11
11
  end
12
12
  end