stripe 4.24.0 → 5.36.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 (216) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +169 -0
  3. data/CODE_OF_CONDUCT.md +77 -0
  4. data/Gemfile +10 -16
  5. data/README.md +111 -44
  6. data/Rakefile +8 -7
  7. data/VERSION +1 -1
  8. data/lib/stripe.rb +39 -130
  9. data/lib/stripe/api_operations/create.rb +1 -1
  10. data/lib/stripe/api_operations/delete.rb +7 -3
  11. data/lib/stripe/api_operations/list.rb +1 -12
  12. data/lib/stripe/api_operations/nested_resource.rb +29 -26
  13. data/lib/stripe/api_operations/request.rb +82 -6
  14. data/lib/stripe/api_operations/save.rb +7 -4
  15. data/lib/stripe/api_resource.rb +12 -3
  16. data/lib/stripe/connection_manager.rb +179 -0
  17. data/lib/stripe/error_object.rb +94 -0
  18. data/lib/stripe/errors.rb +24 -3
  19. data/lib/stripe/instrumentation.rb +82 -0
  20. data/lib/stripe/list_object.rb +34 -5
  21. data/lib/stripe/multipart_encoder.rb +131 -0
  22. data/lib/stripe/oauth.rb +8 -6
  23. data/lib/stripe/object_types.rb +12 -1
  24. data/lib/stripe/resources.rb +12 -1
  25. data/lib/stripe/resources/account.rb +6 -14
  26. data/lib/stripe/resources/account_link.rb +2 -1
  27. data/lib/stripe/resources/alipay_account.rb +1 -1
  28. data/lib/stripe/resources/apple_pay_domain.rb +2 -1
  29. data/lib/stripe/resources/application_fee.rb +2 -12
  30. data/lib/stripe/resources/application_fee_refund.rb +1 -1
  31. data/lib/stripe/resources/balance.rb +2 -1
  32. data/lib/stripe/resources/balance_transaction.rb +2 -1
  33. data/lib/stripe/resources/bank_account.rb +3 -2
  34. data/lib/stripe/resources/billing_portal/configuration.rb +14 -0
  35. data/lib/stripe/resources/billing_portal/session.rb +12 -0
  36. data/lib/stripe/resources/bitcoin_receiver.rb +2 -1
  37. data/lib/stripe/resources/bitcoin_transaction.rb +1 -1
  38. data/lib/stripe/resources/capability.rb +1 -1
  39. data/lib/stripe/resources/card.rb +2 -1
  40. data/lib/stripe/resources/charge.rb +8 -69
  41. data/lib/stripe/resources/checkout/session.rb +6 -1
  42. data/lib/stripe/resources/country_spec.rb +2 -1
  43. data/lib/stripe/resources/coupon.rb +2 -1
  44. data/lib/stripe/resources/credit_note.rb +12 -1
  45. data/lib/stripe/resources/credit_note_line_item.rb +7 -0
  46. data/lib/stripe/resources/customer.rb +9 -63
  47. data/lib/stripe/resources/customer_balance_transaction.rb +1 -1
  48. data/lib/stripe/resources/discount.rb +1 -1
  49. data/lib/stripe/resources/dispute.rb +2 -7
  50. data/lib/stripe/resources/ephemeral_key.rb +2 -1
  51. data/lib/stripe/resources/event.rb +2 -1
  52. data/lib/stripe/resources/exchange_rate.rb +2 -1
  53. data/lib/stripe/resources/file.rb +6 -14
  54. data/lib/stripe/resources/file_link.rb +2 -1
  55. data/lib/stripe/resources/identity/verification_report.rb +12 -0
  56. data/lib/stripe/resources/identity/verification_session.rb +35 -0
  57. data/lib/stripe/resources/invoice.rb +8 -2
  58. data/lib/stripe/resources/invoice_item.rb +2 -1
  59. data/lib/stripe/resources/invoice_line_item.rb +1 -1
  60. data/lib/stripe/resources/issuing/authorization.rb +2 -1
  61. data/lib/stripe/resources/issuing/card.rb +2 -1
  62. data/lib/stripe/resources/issuing/card_details.rb +1 -1
  63. data/lib/stripe/resources/issuing/cardholder.rb +2 -1
  64. data/lib/stripe/resources/issuing/dispute.rb +13 -1
  65. data/lib/stripe/resources/issuing/transaction.rb +2 -1
  66. data/lib/stripe/resources/line_item.rb +7 -0
  67. data/lib/stripe/resources/login_link.rb +1 -1
  68. data/lib/stripe/resources/mandate.rb +8 -0
  69. data/lib/stripe/resources/order.rb +2 -9
  70. data/lib/stripe/resources/order_return.rb +2 -1
  71. data/lib/stripe/resources/payment_intent.rb +2 -1
  72. data/lib/stripe/resources/payment_method.rb +2 -1
  73. data/lib/stripe/resources/payout.rb +10 -5
  74. data/lib/stripe/resources/person.rb +1 -1
  75. data/lib/stripe/resources/plan.rb +2 -1
  76. data/lib/stripe/resources/price.rb +12 -0
  77. data/lib/stripe/resources/product.rb +2 -1
  78. data/lib/stripe/resources/promotion_code.rb +12 -0
  79. data/lib/stripe/resources/quote.rb +95 -0
  80. data/lib/stripe/resources/radar/early_fraud_warning.rb +2 -1
  81. data/lib/stripe/resources/radar/value_list.rb +2 -1
  82. data/lib/stripe/resources/radar/value_list_item.rb +2 -1
  83. data/lib/stripe/resources/recipient.rb +2 -5
  84. data/lib/stripe/resources/recipient_transfer.rb +1 -1
  85. data/lib/stripe/resources/refund.rb +2 -1
  86. data/lib/stripe/resources/reporting/report_run.rb +2 -1
  87. data/lib/stripe/resources/reporting/report_type.rb +2 -1
  88. data/lib/stripe/resources/reversal.rb +1 -1
  89. data/lib/stripe/resources/review.rb +2 -1
  90. data/lib/stripe/resources/setup_attempt.rb +10 -0
  91. data/lib/stripe/resources/setup_intent.rb +2 -1
  92. data/lib/stripe/resources/sigma/scheduled_query_run.rb +2 -1
  93. data/lib/stripe/resources/sku.rb +2 -1
  94. data/lib/stripe/resources/source.rb +11 -10
  95. data/lib/stripe/resources/source_transaction.rb +1 -1
  96. data/lib/stripe/resources/subscription.rb +10 -9
  97. data/lib/stripe/resources/subscription_item.rb +8 -2
  98. data/lib/stripe/resources/subscription_schedule.rb +2 -1
  99. data/lib/stripe/resources/tax_code.rb +10 -0
  100. data/lib/stripe/resources/tax_id.rb +1 -1
  101. data/lib/stripe/resources/tax_rate.rb +2 -1
  102. data/lib/stripe/resources/terminal/connection_token.rb +2 -1
  103. data/lib/stripe/resources/terminal/location.rb +2 -1
  104. data/lib/stripe/resources/terminal/reader.rb +2 -1
  105. data/lib/stripe/resources/three_d_secure.rb +2 -1
  106. data/lib/stripe/resources/token.rb +2 -1
  107. data/lib/stripe/resources/topup.rb +2 -1
  108. data/lib/stripe/resources/transfer.rb +2 -6
  109. data/lib/stripe/resources/usage_record.rb +1 -17
  110. data/lib/stripe/resources/usage_record_summary.rb +1 -1
  111. data/lib/stripe/resources/webhook_endpoint.rb +2 -1
  112. data/lib/stripe/stripe_client.rb +608 -242
  113. data/lib/stripe/stripe_configuration.rb +194 -0
  114. data/lib/stripe/stripe_object.rb +30 -25
  115. data/lib/stripe/stripe_response.rb +87 -27
  116. data/lib/stripe/util.rb +37 -18
  117. data/lib/stripe/version.rb +1 -1
  118. data/lib/stripe/webhook.rb +39 -8
  119. data/stripe.gemspec +15 -11
  120. metadata +24 -216
  121. data/.editorconfig +0 -10
  122. data/.gitattributes +0 -4
  123. data/.github/ISSUE_TEMPLATE.md +0 -5
  124. data/.gitignore +0 -8
  125. data/.rubocop.yml +0 -43
  126. data/.rubocop_todo.yml +0 -38
  127. data/.travis.yml +0 -43
  128. data/.vscode/extensions.json +0 -7
  129. data/.vscode/settings.json +0 -8
  130. data/lib/stripe/resources/issuer_fraud_record.rb +0 -9
  131. data/test/api_stub_helpers.rb +0 -1
  132. data/test/openapi/README.md +0 -9
  133. data/test/stripe/account_link_test.rb +0 -18
  134. data/test/stripe/account_test.rb +0 -428
  135. data/test/stripe/alipay_account_test.rb +0 -37
  136. data/test/stripe/api_operations_test.rb +0 -80
  137. data/test/stripe/api_resource_test.rb +0 -621
  138. data/test/stripe/apple_pay_domain_test.rb +0 -46
  139. data/test/stripe/application_fee_refund_test.rb +0 -37
  140. data/test/stripe/application_fee_test.rb +0 -58
  141. data/test/stripe/balance_test.rb +0 -13
  142. data/test/stripe/balance_transaction_test.rb +0 -20
  143. data/test/stripe/bank_account_test.rb +0 -36
  144. data/test/stripe/capability_test.rb +0 -45
  145. data/test/stripe/charge_test.rb +0 -80
  146. data/test/stripe/checkout/session_test.rb +0 -41
  147. data/test/stripe/country_spec_test.rb +0 -20
  148. data/test/stripe/coupon_test.rb +0 -61
  149. data/test/stripe/credit_note_test.rb +0 -61
  150. data/test/stripe/customer_balance_transaction_test.rb +0 -37
  151. data/test/stripe/customer_card_test.rb +0 -42
  152. data/test/stripe/customer_test.rb +0 -269
  153. data/test/stripe/dispute_test.rb +0 -51
  154. data/test/stripe/ephemeral_key_test.rb +0 -93
  155. data/test/stripe/errors_test.rb +0 -20
  156. data/test/stripe/exchange_rate_test.rb +0 -20
  157. data/test/stripe/file_link_test.rb +0 -41
  158. data/test/stripe/file_test.rb +0 -97
  159. data/test/stripe/file_upload_test.rb +0 -79
  160. data/test/stripe/invoice_item_test.rb +0 -66
  161. data/test/stripe/invoice_line_item_test.rb +0 -8
  162. data/test/stripe/invoice_test.rb +0 -213
  163. data/test/stripe/issuer_fraud_record_test.rb +0 -20
  164. data/test/stripe/issuing/authorization_test.rb +0 -72
  165. data/test/stripe/issuing/card_test.rb +0 -62
  166. data/test/stripe/issuing/cardholder_test.rb +0 -53
  167. data/test/stripe/issuing/dispute_test.rb +0 -45
  168. data/test/stripe/issuing/transaction_test.rb +0 -48
  169. data/test/stripe/list_object_test.rb +0 -156
  170. data/test/stripe/login_link_test.rb +0 -37
  171. data/test/stripe/oauth_test.rb +0 -88
  172. data/test/stripe/order_return_test.rb +0 -21
  173. data/test/stripe/order_test.rb +0 -82
  174. data/test/stripe/payment_intent_test.rb +0 -107
  175. data/test/stripe/payment_method_test.rb +0 -84
  176. data/test/stripe/payout_test.rb +0 -57
  177. data/test/stripe/person_test.rb +0 -46
  178. data/test/stripe/plan_test.rb +0 -98
  179. data/test/stripe/product_test.rb +0 -59
  180. data/test/stripe/radar/early_fraud_warning_test.rb +0 -22
  181. data/test/stripe/radar/value_list_item_test.rb +0 -48
  182. data/test/stripe/radar/value_list_test.rb +0 -61
  183. data/test/stripe/recipient_test.rb +0 -62
  184. data/test/stripe/refund_test.rb +0 -39
  185. data/test/stripe/reporting/report_run_test.rb +0 -33
  186. data/test/stripe/reporting/report_type_test.rb +0 -22
  187. data/test/stripe/reversal_test.rb +0 -43
  188. data/test/stripe/review_test.rb +0 -27
  189. data/test/stripe/setup_intent_test.rb +0 -84
  190. data/test/stripe/sigma/scheduled_query_run_test.rb +0 -22
  191. data/test/stripe/sku_test.rb +0 -60
  192. data/test/stripe/source_test.rb +0 -99
  193. data/test/stripe/source_transaction_test.rb +0 -19
  194. data/test/stripe/stripe_client_test.rb +0 -842
  195. data/test/stripe/stripe_object_test.rb +0 -525
  196. data/test/stripe/stripe_response_test.rb +0 -49
  197. data/test/stripe/subscription_item_test.rb +0 -75
  198. data/test/stripe/subscription_schedule_test.rb +0 -82
  199. data/test/stripe/subscription_test.rb +0 -80
  200. data/test/stripe/tax_id_test.rb +0 -31
  201. data/test/stripe/tax_rate_test.rb +0 -43
  202. data/test/stripe/terminal/connection_token_test.rb +0 -16
  203. data/test/stripe/terminal/location_test.rb +0 -68
  204. data/test/stripe/terminal/reader_test.rb +0 -62
  205. data/test/stripe/three_d_secure_test.rb +0 -23
  206. data/test/stripe/topup_test.rb +0 -62
  207. data/test/stripe/transfer_test.rb +0 -88
  208. data/test/stripe/usage_record_summary_test.rb +0 -19
  209. data/test/stripe/usage_record_test.rb +0 -28
  210. data/test/stripe/util_test.rb +0 -402
  211. data/test/stripe/webhook_endpoint_test.rb +0 -59
  212. data/test/stripe/webhook_test.rb +0 -96
  213. data/test/stripe_mock.rb +0 -77
  214. data/test/stripe_test.rb +0 -63
  215. data/test/test_data.rb +0 -61
  216. data/test/test_helper.rb +0 -71
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b2abaedad94afb640e2ee4b39c6a825a2aa8f234d8ce5d64542d73cae0c46c92
4
- data.tar.gz: c5c0f7c81270700f7abbf8adcf329268daaff092c8c4892c500ff06c6a1e2dc4
3
+ metadata.gz: 9055258932833823356b606115c73e9a909bbfc2e6d70506e2c71d21e2176c27
4
+ data.tar.gz: 4a7261f19e29f65407bff7ee8ae916c1b826e81ac4e1e9c102b6ac147c548b31
5
5
  SHA512:
6
- metadata.gz: 4f3955ca4759861c3f5d2bd6c78d661239886e44d3cf25939185dc0cc1846ded39c19c71f15c1c71295d686d2cab2d3b5937c11cf0dc9364dbca9289718f02b7
7
- data.tar.gz: 9d3d78053ccb35930ebf2cb7da3b4fe986e357599d53fe685b63f79799e26707354eac68b8ce70b0958ddce0375865f67158c1c843c7bd74d28f4b8f8fd3a56c
6
+ metadata.gz: bd7fa29256871a690e19758b6777d9ee58e51fa4cf0a7b3e576fac24deca605cdb400e7eb091378ff15540c1a48ccfd25ba0bb9befba04d6a92d95fb1202416b
7
+ data.tar.gz: ce6d07144a874d49e088033645916e1aa09b2e5eedf787ea1eb182ef963ffddafd314d7442a258937e028b8d84ed04c00d02c68f6a93841a262dbd5bc6e5aecd
data/CHANGELOG.md CHANGED
@@ -1,5 +1,174 @@
1
1
  # Changelog
2
2
 
3
+ ## 5.36.0 - 2021-07-09
4
+ * [#987](https://github.com/stripe/stripe-ruby/pull/987) Add support for `Quote` API
5
+
6
+ ## 5.35.0 - 2021-06-30
7
+ * [#985](https://github.com/stripe/stripe-ruby/pull/985) Update normalize_opts to use dup instead of clone.
8
+ * [#982](https://github.com/stripe/stripe-ruby/pull/982) Deprecate travis
9
+ * [#983](https://github.com/stripe/stripe-ruby/pull/983) Add support for making a request and receiving the response as a stream.
10
+
11
+ ## 5.34.0 - 2021-06-04
12
+ * [#981](https://github.com/stripe/stripe-ruby/pull/981) API Updates
13
+ * Add support for `TaxCode` API.
14
+
15
+ ## 5.33.0 - 2021-05-19
16
+ * [#979](https://github.com/stripe/stripe-ruby/pull/979) Add support for the Identify VerificationSession and VerificationReport APIs
17
+
18
+ ## 5.32.1 - 2021-04-05
19
+ * Correct use of regexp `match` in gemspec for old versions of Ruby
20
+
21
+ ## 5.32.0 - 2021-04-05
22
+ * [#973](https://github.com/stripe/stripe-ruby/pull/973) Reduce packed gem size
23
+
24
+ ## 5.31.0 - 2021-04-02
25
+ * [#968](https://github.com/stripe/stripe-ruby/pull/968) Allow StripeClient to be configured per instance
26
+ * [#971](https://github.com/stripe/stripe-ruby/pull/971) On config change, only clear connection managers for changed config
27
+ * [#972](https://github.com/stripe/stripe-ruby/pull/972) Rename `Stripe.configuration` to `Stripe.config`
28
+ * [#970](https://github.com/stripe/stripe-ruby/pull/970) Reserve some critical field names when adding `StripeObject` accessors
29
+ * [#967](https://github.com/stripe/stripe-ruby/pull/967) CI: github actions
30
+
31
+ ## 5.30.0 - 2021-02-22
32
+ * [#965](https://github.com/stripe/stripe-ruby/pull/965) Add support for the Billing Portal Configuration API
33
+
34
+ ## 5.29.1 - 2021-02-09
35
+ * [#964](https://github.com/stripe/stripe-ruby/pull/964) Fix return value of `Customer#delete_discount`
36
+
37
+ ## 5.29.0 - 2021-01-05
38
+ * [#952](https://github.com/stripe/stripe-ruby/pull/952) Allow client_id configuration on instance config
39
+
40
+ ## 5.28.0 - 2020-10-14
41
+ * [#950](https://github.com/stripe/stripe-ruby/pull/950) Add configuration option for `write_timeout` for connections on Ruby 2.6+
42
+
43
+ ## 5.27.0 - 2020-10-14
44
+ * [#951](https://github.com/stripe/stripe-ruby/pull/951) Add support for the Payout Reverse API
45
+
46
+ ## 5.26.0 - 2020-09-29
47
+ * [#949](https://github.com/stripe/stripe-ruby/pull/949) Add support for the `SetupAttempt` resource and List API
48
+
49
+ ## 5.25.0 - 2020-09-02
50
+ * [#944](https://github.com/stripe/stripe-ruby/pull/944) Add support for the Issuing Dispute Submit API
51
+
52
+ ## 5.24.0 - 2020-08-26
53
+ * [#939](https://github.com/stripe/stripe-ruby/pull/939) Extract configurations into separate object
54
+ * [#940](https://github.com/stripe/stripe-ruby/pull/940) Fix typo in documentation of `stripe_object.rb`
55
+
56
+ ## 5.23.1 - 2020-08-05
57
+ * [#936](https://github.com/stripe/stripe-ruby/pull/936) Rename API resource's `request` method
58
+
59
+ ## 5.23.0 - 2020-08-05
60
+ * [#937](https://github.com/stripe/stripe-ruby/pull/937) Add support for the `PromotionCode` resource and APIs
61
+
62
+ ## 5.22.0 - 2020-05-11
63
+ * [#918](https://github.com/stripe/stripe-ruby/pull/918) Add support for the `LineItem` resource and APIs
64
+
65
+ ## 5.21.0 - 2020-04-29
66
+ * [#917](https://github.com/stripe/stripe-ruby/pull/917) Add support for the `Price` resource and APIs
67
+
68
+ ## 5.20.0 - 2020-04-27
69
+ * [#916](https://github.com/stripe/stripe-ruby/pull/916) Add new `.generate_header` method for webhooks
70
+
71
+ ## 5.19.0 - 2020-04-24
72
+ * [#915](https://github.com/stripe/stripe-ruby/pull/915) Expose `Stripe::Webhook.compute_signature` publicly
73
+
74
+ ## 5.18.0 - 2020-04-22
75
+ * [#911](https://github.com/stripe/stripe-ruby/pull/911) Add support for `BillingPortal` namespace and `Session` resource and APIs
76
+
77
+ ## 5.17.0 - 2020-02-26
78
+ * [#907](https://github.com/stripe/stripe-ruby/pull/907) Add `StripeError#idempotent_replayed?`
79
+
80
+ ## 5.16.0 - 2020-02-26
81
+ * [#906](https://github.com/stripe/stripe-ruby/pull/906) Add support for listing Checkout sessions
82
+ * [#903](https://github.com/stripe/stripe-ruby/pull/903) Upgrade to Rubocop 0.80
83
+
84
+ ## 5.15.0 - 2020-02-10
85
+ * [#902](https://github.com/stripe/stripe-ruby/pull/902) Add `request_begin` instrumentation callback
86
+
87
+ ## 5.14.0 - 2020-01-14
88
+ * [#896](https://github.com/stripe/stripe-ruby/pull/896) Add support for `CreditNoteLineItem`
89
+ * [#894](https://github.com/stripe/stripe-ruby/pull/894) Clean up test output by capturing `$stderr` when we expect warnings
90
+ * [#892](https://github.com/stripe/stripe-ruby/pull/892) Explicitly pass a parameter as hash to be more ruby 2.7 friendly
91
+ * [#893](https://github.com/stripe/stripe-ruby/pull/893) Upgrade Rubocop to 0.79
92
+
93
+ ## 5.13.0 - 2020-01-08
94
+ * [#891](https://github.com/stripe/stripe-ruby/pull/891) Fix most Ruby 2.7 warnings
95
+
96
+ ## 5.12.1 - 2020-01-06
97
+ * [#890](https://github.com/stripe/stripe-ruby/pull/890) Override API key with `client_secret` in `OAuth.token`
98
+
99
+ ## 5.12.0 - 2020-01-02
100
+ * [#889](https://github.com/stripe/stripe-ruby/pull/889) Add support for retrieve source transaction API method
101
+
102
+ ## 5.11.0 - 2019-11-26
103
+ * [#885](https://github.com/stripe/stripe-ruby/pull/885) Add support for `CreditNote` preview
104
+
105
+ ## 5.10.0 - 2019-11-08
106
+ * [#882](https://github.com/stripe/stripe-ruby/pull/882) Add list_usage_record_summaries and list_source_transactions
107
+
108
+ ## 5.9.0 - 2019-11-07
109
+ * [#870](https://github.com/stripe/stripe-ruby/pull/870) Add request instrumentation callback (see `README.md` for usage example)
110
+
111
+ ## 5.8.0 - 2019-11-05
112
+ * [#879](https://github.com/stripe/stripe-ruby/pull/879) Add support for `Mandate`
113
+ * [#876](https://github.com/stripe/stripe-ruby/pull/876) Add additional per-request configuration documentation
114
+ * [#874](https://github.com/stripe/stripe-ruby/pull/874) Raise an error when requests params are invalid
115
+ * [#873](https://github.com/stripe/stripe-ruby/pull/873) Contributor Covenant
116
+
117
+ ## 5.7.1 - 2019-10-15
118
+ * [#869](https://github.com/stripe/stripe-ruby/pull/869) Fixes the misnamed `connection_base=` setter to be named `connect_base=`
119
+
120
+ ## 5.7.0 - 2019-10-10
121
+ * [#865](https://github.com/stripe/stripe-ruby/pull/865) Support backwards pagination with list's `#auto_paging_each`
122
+
123
+ ## 5.6.0 - 2019-10-04
124
+ * [#861](https://github.com/stripe/stripe-ruby/pull/861) Nicer error when specifying non-nil non-string opt value
125
+
126
+ ## 5.5.0 - 2019-10-03
127
+ * [#859](https://github.com/stripe/stripe-ruby/pull/859) User-friendly messages and retries for `EOFError`, `Errno::ECONNRESET`, `Errno::ETIMEDOUT`, and `Errno::EHOSTUNREACH` network errors
128
+
129
+ ## 5.4.1 - 2019-10-01
130
+ * [#858](https://github.com/stripe/stripe-ruby/pull/858) Drop Timecop dependency
131
+
132
+ ## 5.4.0 - 2019-10-01
133
+ * [#857](https://github.com/stripe/stripe-ruby/pull/857) Move to monotonic time for duration calculations
134
+
135
+ ## 5.3.0 - 2019-10-01
136
+ * [#853](https://github.com/stripe/stripe-ruby/pull/853) Support `Stripe-Should-Retry` header
137
+
138
+ ## 5.2.0 - 2019-09-19
139
+ * [#851](https://github.com/stripe/stripe-ruby/pull/851) Introduce system for garbage collecting connection managers
140
+
141
+ ## 5.1.1 - 2019-09-04
142
+ * [#845](https://github.com/stripe/stripe-ruby/pull/845) Transfer the request_id from the http_headers to error.
143
+
144
+ ## 5.1.0 - 2019-08-27
145
+ * [#841](https://github.com/stripe/stripe-ruby/pull/841) Retry requests on a 429 that's a lock timeout
146
+
147
+ ## 5.0.1 - 2019-08-20
148
+ * [#836](https://github.com/stripe/stripe-ruby/pull/836) Increase connection keep alive timeout to 30 seconds
149
+
150
+ ## 5.0.0 - 2019-08-20
151
+ Major version release. The [migration guide](https://github.com/stripe/stripe-ruby/wiki/Migration-guide-for-v5) contains a detailed list of backwards-incompatible changes with upgrade instructions.
152
+
153
+ Pull requests included in this release (cf. [#815](https://github.com/stripe/stripe-ruby/pull/815)) (⚠️ = breaking changes):
154
+ * ⚠️ [#813](https://github.com/stripe/stripe-ruby/pull/813): Convert library to use built-in `Net::HTTP`
155
+ * ⚠️ [#816](https://github.com/stripe/stripe-ruby/pull/816): Make `code` argument in `CardError` named instead of positional.
156
+ * ⚠️ [#817](https://github.com/stripe/stripe-ruby/pull/817): Drop support for very old Ruby versions.
157
+ * [#818](https://github.com/stripe/stripe-ruby/pull/818): Bump Rubocop to latest version
158
+ * [#819](https://github.com/stripe/stripe-ruby/pull/819): Ruby minimum version increase followup
159
+ * ⚠️ [#820](https://github.com/stripe/stripe-ruby/pull/820): Remove old deprecated methods
160
+ * ⚠️ [#823](https://github.com/stripe/stripe-ruby/pull/823): Remove all alias for list methods
161
+ * ⚠️ [#826](https://github.com/stripe/stripe-ruby/pull/826): Remove `UsageRecord.create` method
162
+ * ⚠️ [#827](https://github.com/stripe/stripe-ruby/pull/827): Remove `IssuerFraudRecord`
163
+ * [#811](https://github.com/stripe/stripe-ruby/pull/811): Add `ErrorObject` to `StripeError` exceptions
164
+ * [#828](https://github.com/stripe/stripe-ruby/pull/828): Tweak retry logic to be a little more like stripe-node
165
+ * [#829](https://github.com/stripe/stripe-ruby/pull/829): Reset connections when connection-changing configuration changes (optional)
166
+ * [#830](https://github.com/stripe/stripe-ruby/pull/830): Fix inverted sign for 500 retries
167
+ * ⚠️[#831](https://github.com/stripe/stripe-ruby/pull/831): Remove a few more very old deprecated methods
168
+ * [#832](https://github.com/stripe/stripe-ruby/pull/832): Minor cleanup in `StripeClient`
169
+ * [#833](https://github.com/stripe/stripe-ruby/pull/833): Do better bookkeeping when tracking state in `Thread.current`
170
+ * [#834](https://github.com/stripe/stripe-ruby/pull/834): Add `Invoice.list_upcoming_line_items` method
171
+
3
172
  ## 4.24.0 - 2019-08-12
4
173
  * [#825](https://github.com/stripe/stripe-ruby/pull/825) Add `SubscriptionItem.create_usage_record` method
5
174
  - This release also removed the `SubscriptionSchedule.revisions` method. This should have been included in the previous release (4.23.0)
@@ -0,0 +1,77 @@
1
+ # Contributor Covenant Code of Conduct
2
+
3
+ ## Our Pledge
4
+
5
+ In the interest of fostering an open and welcoming environment, we as
6
+ contributors and maintainers pledge to make participation in our project and
7
+ our community a harassment-free experience for everyone, regardless of age, body
8
+ size, disability, ethnicity, sex characteristics, gender identity and expression,
9
+ level of experience, education, socio-economic status, nationality, personal
10
+ appearance, race, religion, or sexual identity and orientation.
11
+
12
+ ## Our Standards
13
+
14
+ Examples of behavior that contributes to creating a positive environment
15
+ include:
16
+
17
+ * Using welcoming and inclusive language
18
+ * Being respectful of differing viewpoints and experiences
19
+ * Gracefully accepting constructive criticism
20
+ * Focusing on what is best for the community
21
+ * Showing empathy towards other community members
22
+
23
+ Examples of unacceptable behavior by participants include:
24
+
25
+ * The use of sexualized language or imagery and unwelcome sexual attention or
26
+ advances
27
+ * Trolling, insulting/derogatory comments, and personal or political attacks
28
+ * Public or private harassment
29
+ * Publishing others' private information, such as a physical or electronic
30
+ address, without explicit permission
31
+ * Other conduct which could reasonably be considered inappropriate in a
32
+ professional setting
33
+
34
+ ## Our Responsibilities
35
+
36
+ Project maintainers are responsible for clarifying the standards of acceptable
37
+ behavior and are expected to take appropriate and fair corrective action in
38
+ response to any instances of unacceptable behavior.
39
+
40
+ Project maintainers have the right and responsibility to remove, edit, or
41
+ reject comments, commits, code, wiki edits, issues, and other contributions
42
+ that are not aligned to this Code of Conduct, or to ban temporarily or
43
+ permanently any contributor for other behaviors that they deem inappropriate,
44
+ threatening, offensive, or harmful.
45
+
46
+ ## Scope
47
+
48
+ This Code of Conduct applies within all project spaces, and it also applies when
49
+ an individual is representing the project or its community in public spaces.
50
+ Examples of representing a project or community include using an official
51
+ project e-mail address, posting via an official social media account, or acting
52
+ as an appointed representative at an online or offline event. Representation of
53
+ a project may be further defined and clarified by project maintainers.
54
+
55
+ ## Enforcement
56
+
57
+ Instances of abusive, harassing, or otherwise unacceptable behavior may be
58
+ reported by contacting the project team at conduct@stripe.com. All
59
+ complaints will be reviewed and investigated and will result in a response that
60
+ is deemed necessary and appropriate to the circumstances. The project team is
61
+ obligated to maintain confidentiality with regard to the reporter of an incident.
62
+ Further details of specific enforcement policies may be posted separately.
63
+
64
+ Project maintainers who do not follow or enforce the Code of Conduct in good
65
+ faith may face temporary or permanent repercussions as determined by other
66
+ members of the project's leadership.
67
+
68
+ ## Attribution
69
+
70
+ This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
71
+ available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html
72
+
73
+ [homepage]: https://www.contributor-covenant.org
74
+
75
+ For answers to common questions about this code of conduct, see
76
+ https://www.contributor-covenant.org/faq
77
+
data/Gemfile CHANGED
@@ -5,31 +5,25 @@ source "https://rubygems.org"
5
5
  gemspec
6
6
 
7
7
  group :development do
8
- gem "coveralls", require: false
9
8
  gem "mocha", "~> 0.13.2"
9
+ gem "rack", ">= 2.0.6"
10
10
  gem "rake"
11
- gem "shoulda-context"
11
+
12
+ # Update to 2.0.0 once it ships.
13
+ gem "shoulda-context", "2.0.0.rc4"
14
+
12
15
  gem "test-unit"
13
- gem "timecop"
14
- gem "webmock"
16
+
17
+ # Version doesn't matter that much, but this one contains some fixes for Ruby
18
+ # 2.7 warnings that add noise to the test suite.
19
+ gem "webmock", ">= 3.8.0"
15
20
 
16
21
  # Rubocop changes pretty quickly: new cops get added and old cops change
17
22
  # names or go into new namespaces. This is a library and we don't have
18
23
  # `Gemfile.lock` checked in, so to prevent good builds from suddenly going
19
24
  # bad, pin to a specific version number here. Try to keep this relatively
20
25
  # up-to-date, but it's not the end of the world if it's not.
21
- # Note that 0.57.2 is the most recent version we can use until we drop
22
- # support for Ruby 2.1.
23
- gem "rubocop", "0.57.2"
24
-
25
- # Rack 2.0+ requires Ruby >= 2.2.2 which is problematic for the test suite on
26
- # older Ruby versions. Check Ruby the version here and put a maximum
27
- # constraint on Rack if necessary.
28
- if RUBY_VERSION >= "2.2.2"
29
- gem "rack", ">= 2.0.6"
30
- else
31
- gem "rack", ">= 1.6.11", "< 2.0" # rubocop:disable Bundler/DuplicatedGem
32
- end
26
+ gem "rubocop", "0.80"
33
27
 
34
28
  platforms :mri do
35
29
  gem "byebug"
data/README.md CHANGED
@@ -1,7 +1,7 @@
1
1
  # Stripe Ruby Library
2
2
 
3
+ [![Gem Version](https://badge.fury.io/rb/stripe.svg)](https://badge.fury.io/rb/stripe)
3
4
  [![Build Status](https://travis-ci.org/stripe/stripe-ruby.svg?branch=master)](https://travis-ci.org/stripe/stripe-ruby)
4
- [![Coverage Status](https://coveralls.io/repos/github/stripe/stripe-ruby/badge.svg?branch=master)](https://coveralls.io/github/stripe/stripe-ruby?branch=master)
5
5
 
6
6
  The Stripe Ruby library provides convenient access to the Stripe API from
7
7
  applications written in the Ruby language. It includes a pre-defined set of
@@ -13,8 +13,6 @@ The library also provides other features. For example:
13
13
 
14
14
  - Easy configuration path for fast setup and use.
15
15
  - Helpers for pagination.
16
- - Tracking of "fresh" values in API resources so that partial updates can be
17
- executed.
18
16
  - Built-in mechanisms for the serialization of parameters according to the
19
17
  expectations of Stripe's API.
20
18
 
@@ -22,6 +20,9 @@ The library also provides other features. For example:
22
20
 
23
21
  See the [Ruby API docs](https://stripe.com/docs/api/ruby#intro).
24
22
 
23
+ See [video demonstrations][youtube-playlist] covering how to use the library.
24
+
25
+
25
26
  ## Installation
26
27
 
27
28
  You don't need this source code unless you want to modify the gem. If you just
@@ -39,7 +40,7 @@ gem build stripe.gemspec
39
40
 
40
41
  ### Requirements
41
42
 
42
- - Ruby 2.1+.
43
+ - Ruby 2.3+.
43
44
 
44
45
  ### Bundler
45
46
 
@@ -61,16 +62,14 @@ available in your [Stripe Dashboard][api-keys]. Set `Stripe.api_key` to its
61
62
  value:
62
63
 
63
64
  ```ruby
64
- require "stripe"
65
- Stripe.api_key = "sk_test_..."
65
+ require 'stripe'
66
+ Stripe.api_key = 'sk_test_...'
66
67
 
67
- # list charges
68
- Stripe::Charge.list()
68
+ # list customers
69
+ Stripe::Customer.list()
69
70
 
70
- # retrieve single charge
71
- Stripe::Charge.retrieve(
72
- "ch_18atAXCdGbJFKhCuBAa4532Z",
73
- )
71
+ # retrieve single customer
72
+ Stripe::Customer.retrieve('cus_123456789')
74
73
  ```
75
74
 
76
75
  ### Per-request Configuration
@@ -82,49 +81,64 @@ per-request key and/or account:
82
81
  ```ruby
83
82
  require "stripe"
84
83
 
85
- Stripe::Charge.list(
84
+ Stripe::Customer.list(
86
85
  {},
87
86
  {
88
- api_key: "sk_test_...",
89
- stripe_account: "acct_...",
90
- stripe_version: "2018-02-28",
87
+ api_key: 'sk_test_...',
88
+ stripe_account: 'acct_...',
89
+ stripe_version: '2018-02-28',
91
90
  }
92
91
  )
93
92
 
94
- Stripe::Charge.retrieve(
95
- "ch_18atAXCdGbJFKhCuBAa4532Z",
93
+ Stripe::Customer.retrieve(
94
+ 'cus_123456789',
96
95
  {
97
- api_key: "sk_test_...",
98
- stripe_account: "acct_...",
99
- stripe_version: "2018-02-28",
96
+ api_key: 'sk_test_...',
97
+ stripe_account: 'acct_...',
98
+ stripe_version: '2018-02-28',
100
99
  }
101
100
  )
102
101
 
103
- Stripe::Charge.retrieve(
102
+ Stripe::Customer.retrieve(
104
103
  {
105
- id: "ch_18atAXCdGbJFKhCuBAa4532Z",
104
+ id: 'cus_123456789',
106
105
  expand: %w(balance_transaction)
107
106
  },
108
107
  {
109
- stripe_version: "2018-02-28",
110
- api_key: "sk_test_...",
108
+ stripe_version: '2018-02-28',
109
+ api_key: 'sk_test_...',
110
+ }
111
+ )
112
+
113
+ Stripe::Customer.capture(
114
+ 'cus_123456789',
115
+ {},
116
+ {
117
+ stripe_version: '2018-02-28',
118
+ api_key: 'sk_test_...',
111
119
  }
112
120
  )
113
121
  ```
114
122
 
115
- ### Configuring a Client
123
+ Keep in mind that there are different method signatures depending on the action:
124
+
125
+ - When operating on a collection (e.g. `.list`, `.create`) the method signature is
126
+ `method(params, opts)`.
127
+ - When operating on resource (e.g. `.capture`, `.update`) the method signature is
128
+ `method(id, params, opts)`.
129
+ - One exception is that `retrieve`, despite being an operation on a resource, has the signature
130
+ `retrieve(id, opts)`. In addition, it will accept a Hash for the `id` param but will extract the
131
+ `id` key out and use the others as options.
132
+
133
+ ### Accessing a response object
116
134
 
117
- While a default HTTP client is used by default, it's also possible to have the
118
- library use any client supported by [Faraday][faraday] by initializing a
119
- `Stripe::StripeClient` object and giving it a connection:
135
+ Get access to response objects by initializing a client and using its `request`
136
+ method:
120
137
 
121
138
  ```ruby
122
- conn = Faraday.new
123
- client = Stripe::StripeClient.new(conn)
124
- charge, resp = client.request do
125
- Stripe::Charge.retrieve(
126
- "ch_18atAXCdGbJFKhCuBAa4532Z",
127
- )
139
+ client = Stripe::StripeClient.new
140
+ customer, resp = client.request do
141
+ Stripe::Customer.retrieve('cus_123456789',)
128
142
  end
129
143
  puts resp.request_id
130
144
  ```
@@ -134,7 +148,7 @@ puts resp.request_id
134
148
  A proxy can be configured with `Stripe.proxy`:
135
149
 
136
150
  ```ruby
137
- Stripe.proxy = "https://user:pass@example.com:1234"
151
+ Stripe.proxy = 'https://user:pass@example.com:1234'
138
152
  ```
139
153
 
140
154
  ### Configuring an API Version
@@ -143,7 +157,7 @@ By default, the library will use the API version pinned to the account making
143
157
  a request. This can be overridden with this global option:
144
158
 
145
159
  ```ruby
146
- Stripe.api_version = "2018-02-28"
160
+ Stripe.api_version = '2018-02-28'
147
161
  ```
148
162
 
149
163
  See [versioning in the API reference][versioning] for more information.
@@ -154,28 +168,32 @@ By default, the library will use its own internal bundle of known CA
154
168
  certificates, but it's possible to configure your own:
155
169
 
156
170
  ```ruby
157
- Stripe.ca_bundle_path = "path/to/ca/bundle"
171
+ Stripe.ca_bundle_path = 'path/to/ca/bundle'
158
172
  ```
159
173
 
160
174
  ### Configuring Automatic Retries
161
175
 
162
- The library can be configured to automatically retry requests that fail due to
163
- an intermittent network problem:
176
+ You can enable automatic retries on requests that fail due to a transient
177
+ problem by configuring the maximum number of retries:
164
178
 
165
179
  ```ruby
166
180
  Stripe.max_network_retries = 2
167
181
  ```
168
182
 
183
+ Various errors can trigger a retry, like a connection error or a timeout, and
184
+ also certain API responses like HTTP status `409 Conflict`.
185
+
169
186
  [Idempotency keys][idempotency-keys] are added to requests to guarantee that
170
187
  retries are safe.
171
188
 
172
189
  ### Configuring Timeouts
173
190
 
174
- Open and read timeouts are configurable:
191
+ Open, read and write timeouts are configurable:
175
192
 
176
193
  ```ruby
177
- Stripe.open_timeout = 30 // in seconds
194
+ Stripe.open_timeout = 30 # in seconds
178
195
  Stripe.read_timeout = 80
196
+ Stripe.write_timeout = 30 # only supported on Ruby 2.6+
179
197
  ```
180
198
 
181
199
  Please take care to set conservative read timeouts. Some API requests can take
@@ -202,13 +220,62 @@ There are a few options for enabling it:
202
220
  Stripe.log_level = Stripe::LEVEL_INFO
203
221
  ```
204
222
 
223
+ ### Instrumentation
224
+
225
+ The library has various hooks that user code can tie into by passing a block to
226
+ `Stripe::Instrumentation.subscribe` to be notified about specific events.
227
+
228
+ #### `request_begin`
229
+
230
+ Invoked when an HTTP request starts. Receives `RequestBeginEvent` with the
231
+ following properties:
232
+
233
+ - `method`: HTTP method. (`Symbol`)
234
+ - `path`: Request path. (`String`)
235
+ - `user_data`: A hash on which users can set arbitrary data, and which will be
236
+ passed through to `request_end` invocations. This could be used, for example,
237
+ to assign unique IDs to each request, and it'd work even if many requests are
238
+ running in parallel. All subscribers share the same object for any particular
239
+ request, so they must be careful to use unique keys that will not conflict
240
+ with other subscribers. (`Hash`)
241
+
242
+ #### `request_end`
243
+
244
+ Invoked when an HTTP request finishes, regardless of whether it terminated with
245
+ a success or error. Receives `RequestEndEvent` with the following properties:
246
+
247
+ - `duration`: Request duration in seconds. (`Float`)
248
+ - `http_status`: HTTP response code (`Integer`) if available, or `nil` in case
249
+ of a lower level network error.
250
+ - `method`: HTTP method. (`Symbol`)
251
+ - `num_retries`: The number of retries. (`Integer`)
252
+ - `path`: Request path. (`String`)
253
+ - `user_data`: A hash on which users may have set arbitrary data in
254
+ `request_begin`. See above for more information. (`Hash`)
255
+
256
+ #### Example
257
+
258
+ For example:
259
+
260
+ ```ruby
261
+ Stripe::Instrumentation.subscribe(:request_end) do |request_event|
262
+ tags = {
263
+ method: request_event.method,
264
+ resource: request_event.path.split('/')[2],
265
+ code: request_event.http_status,
266
+ retries: request_event.num_retries
267
+ }
268
+ StatsD.distribution('stripe_request', request_event.duration, tags: tags)
269
+ end
270
+ ```
271
+
205
272
  ### Writing a Plugin
206
273
 
207
274
  If you're writing a plugin that uses the library, we'd appreciate it if you
208
275
  identified using `#set_app_info`:
209
276
 
210
277
  ```ruby
211
- Stripe.set_app_info("MyAwesomePlugin", version: "1.2.34", url: "https://myawesomeplugin.info");
278
+ Stripe.set_app_info('MyAwesomePlugin', version: '1.2.34', url: 'https://myawesomeplugin.info')
212
279
  ```
213
280
 
214
281
  This information is passed along when the library makes calls to the Stripe
@@ -272,10 +339,10 @@ Update the bundled [stripe-mock] by editing the version number found in
272
339
  [api-keys]: https://dashboard.stripe.com/account/apikeys
273
340
  [connect]: https://stripe.com/connect
274
341
  [curl]: http://curl.haxx.se/docs/caextract.html
275
- [faraday]: https://github.com/lostisland/faraday
276
342
  [idempotency-keys]: https://stripe.com/docs/api/ruby#idempotent_requests
277
343
  [stripe-mock]: https://github.com/stripe/stripe-mock
278
344
  [versioning]: https://stripe.com/docs/api/ruby#versioning
345
+ [youtube-playlist]: https://www.youtube.com/playlist?list=PLy1nL-pvL2M50RmP6ie-gdcSnfOuQCRYk
279
346
 
280
347
  <!--
281
348
  # vim: set tw=79: