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
@@ -0,0 +1,94 @@
1
+ # frozen_string_literal: true
2
+
3
+ # rubocop:disable Metrics/MethodLength
4
+
5
+ module Stripe
6
+ module ObjectTypes
7
+ def self.object_names_to_classes
8
+ {
9
+ # data structures
10
+ ListObject::OBJECT_NAME => ListObject,
11
+
12
+ # business objects
13
+ Account::OBJECT_NAME => Account,
14
+ AccountLink::OBJECT_NAME => AccountLink,
15
+ AlipayAccount::OBJECT_NAME => AlipayAccount,
16
+ ApplePayDomain::OBJECT_NAME => ApplePayDomain,
17
+ ApplicationFee::OBJECT_NAME => ApplicationFee,
18
+ ApplicationFeeRefund::OBJECT_NAME => ApplicationFeeRefund,
19
+ Balance::OBJECT_NAME => Balance,
20
+ BalanceTransaction::OBJECT_NAME => BalanceTransaction,
21
+ BankAccount::OBJECT_NAME => BankAccount,
22
+ BitcoinReceiver::OBJECT_NAME => BitcoinReceiver,
23
+ BitcoinTransaction::OBJECT_NAME => BitcoinTransaction,
24
+ Capability::OBJECT_NAME => Capability,
25
+ Card::OBJECT_NAME => Card,
26
+ Charge::OBJECT_NAME => Charge,
27
+ Checkout::Session::OBJECT_NAME => Checkout::Session,
28
+ CountrySpec::OBJECT_NAME => CountrySpec,
29
+ Coupon::OBJECT_NAME => Coupon,
30
+ CreditNote::OBJECT_NAME => CreditNote,
31
+ Customer::OBJECT_NAME => Customer,
32
+ CustomerBalanceTransaction::OBJECT_NAME => CustomerBalanceTransaction,
33
+ Discount::OBJECT_NAME => Discount,
34
+ Dispute::OBJECT_NAME => Dispute,
35
+ EphemeralKey::OBJECT_NAME => EphemeralKey,
36
+ Event::OBJECT_NAME => Event,
37
+ ExchangeRate::OBJECT_NAME => ExchangeRate,
38
+ File::OBJECT_NAME => File,
39
+ File::OBJECT_NAME_ALT => File,
40
+ FileLink::OBJECT_NAME => FileLink,
41
+ Invoice::OBJECT_NAME => Invoice,
42
+ InvoiceItem::OBJECT_NAME => InvoiceItem,
43
+ InvoiceLineItem::OBJECT_NAME => InvoiceLineItem,
44
+ Issuing::Authorization::OBJECT_NAME => Issuing::Authorization,
45
+ Issuing::Card::OBJECT_NAME => Issuing::Card,
46
+ Issuing::CardDetails::OBJECT_NAME => Issuing::CardDetails,
47
+ Issuing::Cardholder::OBJECT_NAME => Issuing::Cardholder,
48
+ Issuing::Dispute::OBJECT_NAME => Issuing::Dispute,
49
+ Issuing::Transaction::OBJECT_NAME => Issuing::Transaction,
50
+ LoginLink::OBJECT_NAME => LoginLink,
51
+ Order::OBJECT_NAME => Order,
52
+ OrderReturn::OBJECT_NAME => OrderReturn,
53
+ PaymentIntent::OBJECT_NAME => PaymentIntent,
54
+ PaymentMethod::OBJECT_NAME => PaymentMethod,
55
+ Payout::OBJECT_NAME => Payout,
56
+ Person::OBJECT_NAME => Person,
57
+ Plan::OBJECT_NAME => Plan,
58
+ Product::OBJECT_NAME => Product,
59
+ Radar::EarlyFraudWarning::OBJECT_NAME => Radar::EarlyFraudWarning,
60
+ Radar::ValueList::OBJECT_NAME => Radar::ValueList,
61
+ Radar::ValueListItem::OBJECT_NAME => Radar::ValueListItem,
62
+ Recipient::OBJECT_NAME => Recipient,
63
+ RecipientTransfer::OBJECT_NAME => RecipientTransfer,
64
+ Refund::OBJECT_NAME => Refund,
65
+ Reporting::ReportRun::OBJECT_NAME => Reporting::ReportRun,
66
+ Reporting::ReportType::OBJECT_NAME => Reporting::ReportType,
67
+ Reversal::OBJECT_NAME => Reversal,
68
+ Review::OBJECT_NAME => Review,
69
+ SKU::OBJECT_NAME => SKU,
70
+ SetupIntent::OBJECT_NAME => SetupIntent,
71
+ Sigma::ScheduledQueryRun::OBJECT_NAME => Sigma::ScheduledQueryRun,
72
+ Source::OBJECT_NAME => Source,
73
+ SourceTransaction::OBJECT_NAME => SourceTransaction,
74
+ Subscription::OBJECT_NAME => Subscription,
75
+ SubscriptionItem::OBJECT_NAME => SubscriptionItem,
76
+ SubscriptionSchedule::OBJECT_NAME => SubscriptionSchedule,
77
+ TaxId::OBJECT_NAME => TaxId,
78
+ TaxRate::OBJECT_NAME => TaxRate,
79
+ Terminal::ConnectionToken::OBJECT_NAME => Terminal::ConnectionToken,
80
+ Terminal::Location::OBJECT_NAME => Terminal::Location,
81
+ Terminal::Reader::OBJECT_NAME => Terminal::Reader,
82
+ ThreeDSecure::OBJECT_NAME => ThreeDSecure,
83
+ Token::OBJECT_NAME => Token,
84
+ Topup::OBJECT_NAME => Topup,
85
+ Transfer::OBJECT_NAME => Transfer,
86
+ UsageRecord::OBJECT_NAME => UsageRecord,
87
+ UsageRecordSummary::OBJECT_NAME => UsageRecordSummary,
88
+ WebhookEndpoint::OBJECT_NAME => WebhookEndpoint,
89
+ }
90
+ end
91
+ end
92
+ end
93
+
94
+ # rubocop:enable Metrics/MethodLength
@@ -0,0 +1,77 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "stripe/resources/account"
4
+ require "stripe/resources/account_link"
5
+ require "stripe/resources/alipay_account"
6
+ require "stripe/resources/apple_pay_domain"
7
+ require "stripe/resources/application_fee"
8
+ require "stripe/resources/application_fee_refund"
9
+ require "stripe/resources/balance"
10
+ require "stripe/resources/balance_transaction"
11
+ require "stripe/resources/bank_account"
12
+ require "stripe/resources/bitcoin_receiver"
13
+ require "stripe/resources/bitcoin_transaction"
14
+ require "stripe/resources/capability"
15
+ require "stripe/resources/card"
16
+ require "stripe/resources/charge"
17
+ require "stripe/resources/checkout/session"
18
+ require "stripe/resources/country_spec"
19
+ require "stripe/resources/coupon"
20
+ require "stripe/resources/credit_note"
21
+ require "stripe/resources/customer"
22
+ require "stripe/resources/customer_balance_transaction"
23
+ require "stripe/resources/discount"
24
+ require "stripe/resources/dispute"
25
+ require "stripe/resources/ephemeral_key"
26
+ require "stripe/resources/event"
27
+ require "stripe/resources/exchange_rate"
28
+ require "stripe/resources/file"
29
+ require "stripe/resources/file_link"
30
+ require "stripe/resources/invoice"
31
+ require "stripe/resources/invoice_item"
32
+ require "stripe/resources/invoice_line_item"
33
+ require "stripe/resources/issuing/authorization"
34
+ require "stripe/resources/issuing/card"
35
+ require "stripe/resources/issuing/card_details"
36
+ require "stripe/resources/issuing/cardholder"
37
+ require "stripe/resources/issuing/dispute"
38
+ require "stripe/resources/issuing/transaction"
39
+ require "stripe/resources/login_link"
40
+ require "stripe/resources/order"
41
+ require "stripe/resources/order_return"
42
+ require "stripe/resources/payment_intent"
43
+ require "stripe/resources/payment_method"
44
+ require "stripe/resources/payout"
45
+ require "stripe/resources/person"
46
+ require "stripe/resources/plan"
47
+ require "stripe/resources/product"
48
+ require "stripe/resources/radar/early_fraud_warning"
49
+ require "stripe/resources/radar/value_list"
50
+ require "stripe/resources/radar/value_list_item"
51
+ require "stripe/resources/recipient"
52
+ require "stripe/resources/recipient_transfer"
53
+ require "stripe/resources/refund"
54
+ require "stripe/resources/reporting/report_run"
55
+ require "stripe/resources/reporting/report_type"
56
+ require "stripe/resources/reversal"
57
+ require "stripe/resources/review"
58
+ require "stripe/resources/setup_intent"
59
+ require "stripe/resources/sigma/scheduled_query_run"
60
+ require "stripe/resources/sku"
61
+ require "stripe/resources/source"
62
+ require "stripe/resources/source_transaction"
63
+ require "stripe/resources/subscription"
64
+ require "stripe/resources/subscription_item"
65
+ require "stripe/resources/subscription_schedule"
66
+ require "stripe/resources/tax_id"
67
+ require "stripe/resources/tax_rate"
68
+ require "stripe/resources/terminal/connection_token"
69
+ require "stripe/resources/terminal/location"
70
+ require "stripe/resources/terminal/reader"
71
+ require "stripe/resources/three_d_secure"
72
+ require "stripe/resources/token"
73
+ require "stripe/resources/topup"
74
+ require "stripe/resources/transfer"
75
+ require "stripe/resources/usage_record"
76
+ require "stripe/resources/usage_record_summary"
77
+ require "stripe/resources/webhook_endpoint"
@@ -4,23 +4,36 @@ module Stripe
4
4
  class Account < APIResource
5
5
  extend Gem::Deprecate
6
6
  extend Stripe::APIOperations::Create
7
- extend Stripe::APIOperations::List
8
7
  include Stripe::APIOperations::Delete
8
+ extend Stripe::APIOperations::List
9
9
  include Stripe::APIOperations::Save
10
10
  extend Stripe::APIOperations::NestedResource
11
11
 
12
- OBJECT_NAME = "account".freeze
12
+ OBJECT_NAME = "account"
13
+
14
+ custom_method :reject, http_verb: :post
15
+
16
+ nested_resource_class_methods :capability,
17
+ operations: %i[retrieve update list],
18
+ resource_plural: "capabilities"
19
+ nested_resource_class_methods :person,
20
+ operations: %i[create retrieve update delete list]
21
+
22
+ def reject(params = {}, opts = {})
23
+ request_stripe_object(
24
+ method: :post,
25
+ path: resource_url + "/reject",
26
+ params: params,
27
+ opts: opts
28
+ )
29
+ end
13
30
 
14
31
  save_nested_resource :external_account
32
+
15
33
  nested_resource_class_methods :external_account,
16
34
  operations: %i[create retrieve update delete list]
17
- nested_resource_class_methods :login_link, operations: %i[create]
18
- nested_resource_class_methods :person,
19
- operations: %i[create retrieve update delete list]
20
35
 
21
- # This method is deprecated. Please use `#external_account=` instead.
22
- save_nested_resource :bank_account
23
- deprecate :bank_account=, "#external_account=", 2017, 8
36
+ nested_resource_class_methods :login_link, operations: %i[create]
24
37
 
25
38
  def resource_url
26
39
  if self["id"]
@@ -32,13 +45,18 @@ module Stripe
32
45
 
33
46
  # @override To make id optional
34
47
  def self.retrieve(id = ARGUMENT_NOT_PROVIDED, opts = {})
35
- id = id.equal?(ARGUMENT_NOT_PROVIDED) ? nil : Util.check_string_argument!(id)
48
+ id = if id.equal?(ARGUMENT_NOT_PROVIDED)
49
+ nil
50
+ else
51
+ Util.check_string_argument!(id)
52
+ end
36
53
 
37
54
  # Account used to be a singleton, where this method's signature was
38
55
  # `(opts={})`. For the sake of not breaking folks who pass in an OAuth
39
56
  # key in opts, let's lurkily string match for it.
40
57
  if opts == {} && id.is_a?(String) && id.start_with?("sk_")
41
- # `super` properly assumes a String opts is the apiKey and normalizes as expected.
58
+ # `super` properly assumes a String opts is the apiKey and normalizes
59
+ # as expected.
42
60
  opts = id
43
61
  id = nil
44
62
  end
@@ -46,15 +64,13 @@ module Stripe
46
64
  end
47
65
 
48
66
  def persons(params = {}, opts = {})
49
- resp, opts = request(:get, resource_url + "/persons", params, Util.normalize_opts(opts))
67
+ resp, opts = request(:get, resource_url + "/persons", params, opts)
50
68
  Util.convert_to_stripe_object(resp.data, opts)
51
69
  end
52
70
 
53
- def reject(params = {}, opts = {})
54
- opts = Util.normalize_opts(opts)
55
- resp, opts = request(:post, resource_url + "/reject", params, opts)
56
- initialize_from(resp.data, opts)
57
- end
71
+ # We are not adding a helper for capabilities here as the Account object
72
+ # already has a capabilities property which is a hash and not the sub-list
73
+ # of capabilities.
58
74
 
59
75
  # Somewhat unfortunately, we attempt to do a special encoding trick when
60
76
  # serializing `additional_owners` under an account: when updating a value,
@@ -107,8 +123,11 @@ module Stripe
107
123
  self["legal_entity"]
108
124
  end
109
125
 
110
- def legal_entity=(_)
111
- raise NoMethodError, 'Overriding legal_entity can cause serious issues. Instead, set the individual fields of legal_entity like blah.legal_entity.first_name = \'Blah\''
126
+ def legal_entity=(_legal_entity)
127
+ raise NoMethodError,
128
+ "Overriding legal_entity can cause serious issues. Instead, set " \
129
+ "the individual fields of legal_entity like " \
130
+ "`account.legal_entity.first_name = 'Blah'`"
112
131
  end
113
132
 
114
133
  def deauthorize(client_id = nil, opts = {})
@@ -121,15 +140,17 @@ module Stripe
121
140
 
122
141
  ARGUMENT_NOT_PROVIDED = Object.new
123
142
 
124
- private
125
-
126
- def serialize_additional_owners(legal_entity, additional_owners)
127
- original_value = legal_entity.instance_variable_get(:@original_values)[:additional_owners]
143
+ private def serialize_additional_owners(legal_entity, additional_owners)
144
+ original_value =
145
+ legal_entity
146
+ .instance_variable_get(:@original_values)[:additional_owners]
128
147
  if original_value && original_value.length > additional_owners.length
129
148
  # url params provide no mechanism for deleting an item in an array,
130
149
  # just overwriting the whole array or adding new items. So let's not
131
150
  # allow deleting without a full overwrite until we have a solution.
132
- raise ArgumentError, "You cannot delete an item from an array, you must instead set a new array"
151
+ raise ArgumentError,
152
+ "You cannot delete an item from an array, you must instead " \
153
+ "set a new array"
133
154
  end
134
155
 
135
156
  update_hash = {}
@@ -141,10 +162,11 @@ module Stripe
141
162
  # StripeObject.
142
163
  update = v.is_a?(StripeObject) ? v.serialize_params : v
143
164
 
144
- if update != {} && (!original_value ||
145
- update != legal_entity.serialize_params_value(original_value[i], nil, false, true))
146
- update_hash[i.to_s] = update
147
- end
165
+ next unless update != {} && (!original_value ||
166
+ update != legal_entity.serialize_params_value(original_value[i], nil,
167
+ false, true))
168
+
169
+ update_hash[i.to_s] = update
148
170
  end
149
171
  update_hash
150
172
  end
@@ -4,6 +4,6 @@ module Stripe
4
4
  class AccountLink < APIResource
5
5
  extend Stripe::APIOperations::Create
6
6
 
7
- OBJECT_NAME = "account_link".freeze
7
+ OBJECT_NAME = "account_link"
8
8
  end
9
9
  end
@@ -0,0 +1,34 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Stripe
4
+ class AlipayAccount < APIResource
5
+ include Stripe::APIOperations::Save
6
+ include Stripe::APIOperations::Delete
7
+
8
+ OBJECT_NAME = "alipay_account"
9
+
10
+ def resource_url
11
+ if !respond_to?(:customer) || customer.nil?
12
+ raise NotImplementedError,
13
+ "Alipay accounts cannot be accessed without a customer ID."
14
+ end
15
+
16
+ "#{Customer.resource_url}/#{CGI.escape(customer)}/sources" \
17
+ "/#{CGI.escape(id)}"
18
+ end
19
+
20
+ def self.update(_id, _params = nil, _opts = nil)
21
+ raise NotImplementedError,
22
+ "Alipay accounts cannot be updated without a customer ID. " \
23
+ "Update an Alipay account using `Customer.update_source(" \
24
+ "'customer_id', 'alipay_account_id', update_params)`"
25
+ end
26
+
27
+ def self.retrieve(_id, _opts = nil)
28
+ raise NotImplementedError,
29
+ "Alipay accounts cannot be retrieved without a customer ID. " \
30
+ "Retrieve an Alipay account using `Customer.retrieve_source(" \
31
+ "'customer_id', 'alipay_account_id')`"
32
+ end
33
+ end
34
+ end
@@ -7,7 +7,7 @@ module Stripe
7
7
  include Stripe::APIOperations::Delete
8
8
  extend Stripe::APIOperations::List
9
9
 
10
- OBJECT_NAME = "apple_pay_domain".freeze
10
+ OBJECT_NAME = "apple_pay_domain"
11
11
 
12
12
  def self.resource_url
13
13
  "/v1/apple_pay/domains"
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Stripe
4
+ class ApplicationFee < APIResource
5
+ extend Stripe::APIOperations::List
6
+ extend Stripe::APIOperations::NestedResource
7
+
8
+ OBJECT_NAME = "application_fee"
9
+
10
+ nested_resource_class_methods :refund,
11
+ operations: %i[create retrieve update list]
12
+ end
13
+ end
@@ -0,0 +1,30 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Stripe
4
+ class ApplicationFeeRefund < APIResource
5
+ include Stripe::APIOperations::Save
6
+ extend Stripe::APIOperations::List
7
+
8
+ OBJECT_NAME = "fee_refund"
9
+
10
+ def resource_url
11
+ "#{ApplicationFee.resource_url}/#{CGI.escape(fee)}/refunds" \
12
+ "/#{CGI.escape(id)}"
13
+ end
14
+
15
+ def self.update(_id, _params = nil, _opts = nil)
16
+ raise NotImplementedError,
17
+ "Application fee refunds cannot be updated without an " \
18
+ "application fee ID. Update an application fee refund using " \
19
+ "`ApplicationFee.update_refund('fee_id', 'refund_id', " \
20
+ "update_params)`"
21
+ end
22
+
23
+ def self.retrieve(_id, _api_key = nil)
24
+ raise NotImplementedError,
25
+ "Application fee refunds cannot be retrieved without an " \
26
+ "application fee ID. Retrieve an application fee refund using " \
27
+ "`ApplicationFee.retrieve_refund('fee_id', 'refund_id')`"
28
+ end
29
+ end
30
+ end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Stripe
4
4
  class Balance < SingletonAPIResource
5
- OBJECT_NAME = "balance".freeze
5
+ OBJECT_NAME = "balance"
6
6
  end
7
7
  end
@@ -4,10 +4,6 @@ module Stripe
4
4
  class BalanceTransaction < APIResource
5
5
  extend Stripe::APIOperations::List
6
6
 
7
- OBJECT_NAME = "balance_transaction".freeze
8
-
9
- def self.resource_url
10
- "/v1/balance/history"
11
- end
7
+ OBJECT_NAME = "balance_transaction"
12
8
  end
13
9
  end
@@ -2,11 +2,11 @@
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
- OBJECT_NAME = "bank_account".freeze
9
+ OBJECT_NAME = "bank_account"
10
10
 
11
11
  def verify(params = {}, opts = {})
12
12
  resp, opts = request(:post, resource_url + "/verify", params, opts)
@@ -22,11 +22,21 @@ module Stripe
22
22
  end
23
23
 
24
24
  def self.update(_id, _params = nil, _opts = nil)
25
- raise NotImplementedError, "Bank accounts cannot be updated without an account ID. Update a bank account by using `a = account.external_accounts.retrieve('card_id'); a.save`"
25
+ raise NotImplementedError,
26
+ "Bank accounts cannot be updated without a customer ID or an " \
27
+ " account ID. Update a bank account using " \
28
+ "`Customer.update_source('customer_id', 'bank_account_id', " \
29
+ "update_params)` or `Account.update_external_account(" \
30
+ "'account_id', 'bank_account_id', update_params)`"
26
31
  end
27
32
 
28
33
  def self.retrieve(_id, _opts = nil)
29
- raise NotImplementedError, "Bank accounts cannot be retrieved without an account ID. Retrieve a bank account using account.external_accounts.retrieve('card_id')"
34
+ raise NotImplementedError,
35
+ "Bank accounts cannot be retrieve without a customer ID or an " \
36
+ "account ID. Retrieve a bank account using " \
37
+ "`Customer.retrieve_source('customer_id', 'bank_account_id')` " \
38
+ "or `Account.retrieve_external_account('account_id', " \
39
+ "'bank_account_id')`"
30
40
  end
31
41
  end
32
42
  end