stripe 10.1.0 → 12.6.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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +215 -21
- data/Gemfile +6 -5
- data/Makefile +8 -1
- data/OPENAPI_VERSION +1 -1
- data/README.md +46 -14
- data/Rakefile +7 -5
- data/VERSION +1 -1
- data/{bin → exe}/stripe-console +1 -1
- data/lib/stripe/api_operations/nested_resource.rb +22 -2
- data/lib/stripe/api_operations/request.rb +22 -18
- data/lib/stripe/api_operations/save.rb +7 -9
- data/lib/stripe/api_operations/search.rb +5 -0
- data/lib/stripe/api_operations/singleton_save.rb +86 -0
- data/lib/stripe/api_resource.rb +13 -4
- data/lib/stripe/api_resource_test_helpers.rb +7 -3
- data/lib/stripe/api_version.rb +1 -1
- data/lib/stripe/connection_manager.rb +4 -6
- data/lib/stripe/errors.rb +3 -11
- data/lib/stripe/instrumentation.rb +5 -21
- data/lib/stripe/list_object.rb +3 -0
- data/lib/stripe/multipart_encoder.rb +7 -7
- data/lib/stripe/oauth.rb +6 -6
- data/lib/stripe/object_types.rb +135 -116
- data/lib/stripe/resources/account.rb +103 -25
- data/lib/stripe/resources/account_link.rb +8 -0
- data/lib/stripe/resources/account_session.rb +8 -0
- data/lib/stripe/resources/alipay_account.rb +1 -1
- data/lib/stripe/resources/apple_pay_domain.rb +43 -0
- data/lib/stripe/resources/application_fee.rb +8 -0
- data/lib/stripe/resources/application_fee_refund.rb +4 -2
- data/lib/stripe/resources/apps/secret.rb +15 -0
- data/lib/stripe/resources/balance.rb +3 -0
- data/lib/stripe/resources/balance_transaction.rb +15 -0
- data/lib/stripe/resources/bank_account.rb +49 -7
- data/lib/stripe/resources/billing/alert.rb +87 -0
- data/lib/stripe/resources/billing/meter.rb +83 -0
- data/lib/stripe/resources/billing/meter_event.rb +27 -0
- data/lib/stripe/resources/billing/meter_event_adjustment.rb +26 -0
- data/lib/stripe/resources/billing/meter_event_summary.rb +15 -0
- data/lib/stripe/resources/billing_portal/configuration.rb +33 -0
- data/lib/stripe/resources/billing_portal/session.rb +14 -1
- data/lib/stripe/resources/capability.rb +4 -2
- data/lib/stripe/resources/card.rb +28 -0
- data/lib/stripe/resources/cash_balance.rb +3 -0
- data/lib/stripe/resources/charge.rb +39 -1
- data/lib/stripe/resources/checkout/session.rb +47 -5
- data/lib/stripe/resources/climate/order.rb +67 -0
- data/lib/stripe/resources/climate/product.rb +27 -0
- data/lib/stripe/resources/climate/supplier.rb +26 -0
- data/lib/stripe/resources/confirmation_token.rb +39 -0
- data/lib/stripe/resources/country_spec.rb +8 -0
- data/lib/stripe/resources/coupon.rb +45 -0
- data/lib/stripe/resources/credit_note.rb +47 -7
- data/lib/stripe/resources/credit_note_line_item.rb +3 -0
- data/lib/stripe/resources/customer.rb +89 -26
- data/lib/stripe/resources/customer_balance_transaction.rb +3 -1
- data/lib/stripe/resources/customer_cash_balance_transaction.rb +3 -2
- data/lib/stripe/resources/customer_session.rb +29 -0
- data/lib/stripe/resources/discount.rb +3 -0
- data/lib/stripe/resources/dispute.rb +26 -0
- data/lib/stripe/resources/entitlements/active_entitlement.rb +26 -0
- data/lib/stripe/resources/entitlements/feature.rb +49 -0
- data/lib/stripe/resources/ephemeral_key.rb +23 -0
- data/lib/stripe/resources/event.rb +11 -3
- data/lib/stripe/resources/exchange_rate.rb +8 -0
- data/lib/stripe/resources/file.rb +29 -16
- data/lib/stripe/resources/file_link.rb +23 -0
- data/lib/stripe/resources/financial_connections/account.rb +66 -7
- data/lib/stripe/resources/financial_connections/account_owner.rb +3 -0
- data/lib/stripe/resources/financial_connections/account_ownership.rb +3 -0
- data/lib/stripe/resources/financial_connections/session.rb +13 -0
- data/lib/stripe/resources/financial_connections/transaction.rb +26 -0
- data/lib/stripe/resources/forwarding/request.rb +52 -0
- data/lib/stripe/resources/funding_instructions.rb +3 -0
- data/lib/stripe/resources/identity/verification_report.rb +14 -1
- data/lib/stripe/resources/identity/verification_session.rb +90 -4
- data/lib/stripe/resources/invoice.rb +170 -17
- data/lib/stripe/resources/invoice_item.rb +43 -0
- data/lib/stripe/resources/invoice_line_item.rb +21 -0
- data/lib/stripe/resources/invoice_rendering_template.rb +63 -0
- data/lib/stripe/resources/issuing/authorization.rb +88 -14
- data/lib/stripe/resources/issuing/card.rb +50 -16
- data/lib/stripe/resources/issuing/cardholder.rb +33 -0
- data/lib/stripe/resources/issuing/dispute.rb +35 -0
- data/lib/stripe/resources/issuing/personalization_design.rb +119 -0
- data/lib/stripe/resources/issuing/physical_bundle.rb +26 -0
- data/lib/stripe/resources/issuing/token.rb +18 -0
- data/lib/stripe/resources/issuing/transaction.rb +30 -0
- data/lib/stripe/resources/line_item.rb +3 -0
- data/lib/stripe/resources/login_link.rb +4 -1
- data/lib/stripe/resources/mandate.rb +3 -0
- data/lib/stripe/resources/payment_intent.rb +190 -25
- data/lib/stripe/resources/payment_link.rb +25 -0
- data/lib/stripe/resources/payment_method.rb +57 -4
- data/lib/stripe/resources/payment_method_configuration.rb +33 -0
- data/lib/stripe/resources/payment_method_domain.rb +46 -1
- data/lib/stripe/resources/payout.rb +39 -4
- data/lib/stripe/resources/person.rb +5 -4
- data/lib/stripe/resources/plan.rb +43 -0
- data/lib/stripe/resources/price.rb +24 -1
- data/lib/stripe/resources/product.rb +47 -1
- data/lib/stripe/resources/product_feature.rb +13 -0
- data/lib/stripe/resources/promotion_code.rb +23 -0
- data/lib/stripe/resources/quote.rb +67 -32
- data/lib/stripe/resources/radar/early_fraud_warning.rb +13 -0
- data/lib/stripe/resources/radar/value_list.rb +53 -0
- data/lib/stripe/resources/radar/value_list_item.rb +43 -0
- data/lib/stripe/resources/refund.rb +46 -0
- data/lib/stripe/resources/reporting/report_run.rb +23 -0
- data/lib/stripe/resources/reporting/report_type.rb +13 -0
- data/lib/stripe/resources/reversal.rb +5 -3
- data/lib/stripe/resources/review.rb +10 -0
- data/lib/stripe/resources/setup_attempt.rb +8 -0
- data/lib/stripe/resources/setup_intent.rb +72 -10
- data/lib/stripe/resources/shipping_rate.rb +23 -0
- data/lib/stripe/resources/sigma/scheduled_query_run.rb +13 -0
- data/lib/stripe/resources/source.rb +23 -1
- data/lib/stripe/resources/source_transaction.rb +3 -0
- data/lib/stripe/resources/subscription.rb +81 -13
- data/lib/stripe/resources/subscription_item.rb +54 -1
- data/lib/stripe/resources/subscription_schedule.rb +41 -4
- data/lib/stripe/resources/tax/calculation.rb +15 -0
- data/lib/stripe/resources/tax/calculation_line_item.rb +3 -0
- data/lib/stripe/resources/tax/registration.rb +35 -0
- data/lib/stripe/resources/tax/settings.rb +4 -2
- data/lib/stripe/resources/tax/transaction.rb +15 -8
- data/lib/stripe/resources/tax/transaction_line_item.rb +3 -0
- data/lib/stripe/resources/tax_code.rb +8 -0
- data/lib/stripe/resources/tax_id.rb +30 -12
- data/lib/stripe/resources/tax_rate.rb +23 -0
- data/lib/stripe/resources/terminal/configuration.rb +53 -0
- data/lib/stripe/resources/terminal/connection_token.rb +13 -0
- data/lib/stripe/resources/terminal/location.rb +54 -0
- data/lib/stripe/resources/terminal/reader.rb +80 -12
- data/lib/stripe/resources/test_helpers/test_clock.rb +45 -0
- data/lib/stripe/resources/token.rb +10 -1
- data/lib/stripe/resources/topup.rb +25 -0
- data/lib/stripe/resources/transfer.rb +26 -1
- data/lib/stripe/resources/treasury/credit_reversal.rb +23 -0
- data/lib/stripe/resources/treasury/debit_reversal.rb +23 -0
- data/lib/stripe/resources/treasury/financial_account.rb +42 -5
- data/lib/stripe/resources/treasury/financial_account_features.rb +3 -0
- data/lib/stripe/resources/treasury/inbound_transfer.rb +47 -11
- data/lib/stripe/resources/treasury/outbound_payment.rb +64 -8
- data/lib/stripe/resources/treasury/outbound_transfer.rb +64 -8
- data/lib/stripe/resources/treasury/received_credit.rb +17 -0
- data/lib/stripe/resources/treasury/received_debit.rb +17 -0
- data/lib/stripe/resources/treasury/transaction.rb +13 -0
- data/lib/stripe/resources/treasury/transaction_entry.rb +13 -0
- data/lib/stripe/resources/usage_record.rb +5 -0
- data/lib/stripe/resources/usage_record_summary.rb +3 -0
- data/lib/stripe/resources/webhook_endpoint.rb +55 -2
- data/lib/stripe/resources.rb +18 -0
- data/lib/stripe/search_result_object.rb +4 -1
- data/lib/stripe/singleton_api_resource.rb +20 -3
- data/lib/stripe/stripe_client.rb +61 -63
- data/lib/stripe/stripe_configuration.rb +13 -29
- data/lib/stripe/stripe_object.rb +23 -21
- data/lib/stripe/stripe_response.rb +1 -3
- data/lib/stripe/util.rb +13 -15
- data/lib/stripe/version.rb +1 -1
- data/lib/stripe.rb +26 -0
- data/stripe.gemspec +7 -4
- metadata +25 -5
@@ -5,14 +5,14 @@ module Stripe
|
|
5
5
|
module Request
|
6
6
|
module ClassMethods
|
7
7
|
def execute_resource_request(method, url,
|
8
|
-
params = {}, opts = {})
|
8
|
+
params = {}, opts = {}, usage = [])
|
9
9
|
execute_resource_request_internal(
|
10
|
-
:execute_request, method, url, params, opts
|
10
|
+
:execute_request, method, url, params, opts, usage
|
11
11
|
)
|
12
12
|
end
|
13
13
|
|
14
14
|
def execute_resource_request_stream(method, url,
|
15
|
-
params = {}, opts = {},
|
15
|
+
params = {}, opts = {}, usage = [],
|
16
16
|
&read_body_chunk_block)
|
17
17
|
execute_resource_request_internal(
|
18
18
|
:execute_request_stream,
|
@@ -20,18 +20,19 @@ module Stripe
|
|
20
20
|
url,
|
21
21
|
params,
|
22
22
|
opts,
|
23
|
+
usage,
|
23
24
|
&read_body_chunk_block
|
24
25
|
)
|
25
26
|
end
|
26
27
|
|
27
|
-
private def request_stripe_object(method:, path:, params:, opts: {})
|
28
|
-
resp, opts = execute_resource_request(method, path, params, opts)
|
29
|
-
Util.convert_to_stripe_object_with_params(resp.data, params, opts)
|
28
|
+
private def request_stripe_object(method:, path:, params:, opts: {}, usage: [])
|
29
|
+
resp, opts = execute_resource_request(method, path, params, opts, usage)
|
30
|
+
Util.convert_to_stripe_object_with_params(resp.data, params, opts, resp)
|
30
31
|
end
|
31
32
|
|
32
33
|
private def execute_resource_request_internal(client_request_method_sym,
|
33
34
|
method, url,
|
34
|
-
params, opts,
|
35
|
+
params, opts, usage,
|
35
36
|
&read_body_chunk_block)
|
36
37
|
params ||= {}
|
37
38
|
|
@@ -53,7 +54,7 @@ module Stripe
|
|
53
54
|
client_request_method_sym,
|
54
55
|
method, url,
|
55
56
|
api_base: api_base, api_key: api_key,
|
56
|
-
headers: headers, params: params,
|
57
|
+
headers: headers, params: params, usage: usage,
|
57
58
|
&read_body_chunk_block
|
58
59
|
)
|
59
60
|
|
@@ -66,6 +67,7 @@ module Stripe
|
|
66
67
|
[resp, opts_to_persist]
|
67
68
|
end
|
68
69
|
|
70
|
+
# TODO: (major)
|
69
71
|
# This method used to be called `request`, but it's such a short name
|
70
72
|
# that it eventually conflicted with the name of a field on an API
|
71
73
|
# resource (specifically, `Event#request`), so it was renamed to
|
@@ -76,6 +78,8 @@ module Stripe
|
|
76
78
|
# place for backwards compatibility. Consider removing it on the next
|
77
79
|
# major.
|
78
80
|
alias request execute_resource_request
|
81
|
+
extend Gem::Deprecate
|
82
|
+
deprecate :request, "Stripe.raw_request", 2024, 7
|
79
83
|
|
80
84
|
private def error_on_non_string_user_opts(opts)
|
81
85
|
Util::OPTS_USER_SPECIFIED.each do |opt|
|
@@ -87,7 +91,7 @@ module Stripe
|
|
87
91
|
|
88
92
|
raise ArgumentError,
|
89
93
|
"request option '#{opt}' should be a string value " \
|
90
|
-
|
94
|
+
"(was a #{val.class})"
|
91
95
|
end
|
92
96
|
end
|
93
97
|
|
@@ -96,14 +100,12 @@ module Stripe
|
|
96
100
|
|
97
101
|
raise ArgumentError,
|
98
102
|
"request params should be either a Hash or nil " \
|
99
|
-
|
103
|
+
"(was a #{params.class})"
|
100
104
|
end
|
101
105
|
|
102
106
|
private def warn_on_opts_in_params(params)
|
103
107
|
Util::OPTS_USER_SPECIFIED.each do |opt|
|
104
|
-
if params.key?(opt)
|
105
|
-
warn("WARNING: '#{opt}' should be in opts instead of params.")
|
106
|
-
end
|
108
|
+
warn("WARNING: '#{opt}' should be in opts instead of params.") if params.key?(opt)
|
107
109
|
end
|
108
110
|
end
|
109
111
|
end
|
@@ -113,9 +115,9 @@ module Stripe
|
|
113
115
|
end
|
114
116
|
|
115
117
|
protected def execute_resource_request(method, url,
|
116
|
-
params = {}, opts = {})
|
118
|
+
params = {}, opts = {}, usage = [])
|
117
119
|
opts = @opts.merge(Util.normalize_opts(opts))
|
118
|
-
self.class.execute_resource_request(method, url, params, opts)
|
120
|
+
self.class.execute_resource_request(method, url, params, opts, usage)
|
119
121
|
end
|
120
122
|
|
121
123
|
protected def execute_resource_request_stream(method, url,
|
@@ -127,13 +129,15 @@ module Stripe
|
|
127
129
|
)
|
128
130
|
end
|
129
131
|
|
130
|
-
private def request_stripe_object(method:, path:, params:, opts: {})
|
131
|
-
resp, opts = execute_resource_request(method, path, params, opts)
|
132
|
-
Util.convert_to_stripe_object_with_params(resp.data, params, opts)
|
132
|
+
private def request_stripe_object(method:, path:, params:, opts: {}, usage: [])
|
133
|
+
resp, opts = execute_resource_request(method, path, params, opts, usage)
|
134
|
+
Util.convert_to_stripe_object_with_params(resp.data, params, opts, resp)
|
133
135
|
end
|
134
136
|
|
135
137
|
# See notes on `alias` above.
|
136
138
|
alias request execute_resource_request
|
139
|
+
extend Gem::Deprecate
|
140
|
+
deprecate :request, "Stripe.raw_request", 2024, 7
|
137
141
|
end
|
138
142
|
end
|
139
143
|
end
|
@@ -19,9 +19,7 @@ module Stripe
|
|
19
19
|
# {APIOperations::Request.execute_resource_request}.
|
20
20
|
def update(id, params = {}, opts = {})
|
21
21
|
params.each_key do |k|
|
22
|
-
if protected_fields.include?(k)
|
23
|
-
raise ArgumentError, "Cannot update protected field: #{k}"
|
24
|
-
end
|
22
|
+
raise ArgumentError, "Cannot update protected field: #{k}" if protected_fields.include?(k)
|
25
23
|
end
|
26
24
|
|
27
25
|
request_stripe_object(
|
@@ -64,17 +62,17 @@ module Stripe
|
|
64
62
|
|
65
63
|
values = serialize_params(self).merge(params)
|
66
64
|
|
67
|
-
# note that id gets removed here our call to #url above has already
|
65
|
+
# Please note that id gets removed here our call to #url above has already
|
68
66
|
# generated a uri for this object with an identifier baked in
|
69
67
|
values.delete(:id)
|
70
68
|
|
71
|
-
resp, opts = execute_resource_request(:post, save_url, values, opts)
|
72
|
-
initialize_from(resp.data, opts)
|
69
|
+
resp, opts = execute_resource_request(:post, save_url, values, opts, ["save"])
|
70
|
+
initialize_from(resp.data, opts, resp)
|
73
71
|
end
|
74
72
|
extend Gem::Deprecate
|
75
|
-
deprecate :save, "the `update` class method (for examples"\
|
76
|
-
|
77
|
-
|
73
|
+
deprecate :save, "the `update` class method (for examples " \
|
74
|
+
"see https://github.com/stripe/stripe-ruby" \
|
75
|
+
"/wiki/Migration-guide-for-v8)", 2022, 11
|
78
76
|
|
79
77
|
def self.included(base)
|
80
78
|
# Set `metadata` as additive so that when it's set directly we remember
|
@@ -2,6 +2,8 @@
|
|
2
2
|
|
3
3
|
module Stripe
|
4
4
|
module APIOperations
|
5
|
+
# The _search method via API Operations is deprecated.
|
6
|
+
# Please use the search method from within the resource instead.
|
5
7
|
module Search
|
6
8
|
def _search(search_url, filters = {}, opts = {})
|
7
9
|
request_stripe_object(
|
@@ -11,6 +13,9 @@ module Stripe
|
|
11
13
|
opts: opts
|
12
14
|
)
|
13
15
|
end
|
16
|
+
|
17
|
+
extend Gem::Deprecate
|
18
|
+
deprecate :_search, "request_stripe_object", 2024, 1
|
14
19
|
end
|
15
20
|
end
|
16
21
|
end
|
@@ -0,0 +1,86 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Stripe
|
4
|
+
module APIOperations
|
5
|
+
module SingletonSave
|
6
|
+
module ClassMethods
|
7
|
+
# Updates a singleton API resource
|
8
|
+
#
|
9
|
+
# Updates the identified resource with the passed in parameters.
|
10
|
+
#
|
11
|
+
# ==== Attributes
|
12
|
+
#
|
13
|
+
# * +params+ - A hash of parameters to pass to the API
|
14
|
+
# * +opts+ - A Hash of additional options (separate from the params /
|
15
|
+
# object values) to be added to the request. E.g. to allow for an
|
16
|
+
# idempotency_key to be passed in the request headers, or for the
|
17
|
+
# api_key to be overwritten. See
|
18
|
+
# {APIOperations::Request.execute_resource_request}.
|
19
|
+
def update(params = {}, opts = {})
|
20
|
+
params.each_key do |k|
|
21
|
+
raise ArgumentError, "Cannot update protected field: #{k}" if protected_fields.include?(k)
|
22
|
+
end
|
23
|
+
|
24
|
+
request_stripe_object(
|
25
|
+
method: :post,
|
26
|
+
path: resource_url,
|
27
|
+
params: params,
|
28
|
+
opts: opts
|
29
|
+
)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
# The `save` method is DEPRECATED and will be removed in a future major
|
34
|
+
# version of the library. Use the `update` method on the resource instead.
|
35
|
+
#
|
36
|
+
# Updates a singleton API resource.
|
37
|
+
#
|
38
|
+
# If the resource doesn't yet have an assigned ID and the resource is one
|
39
|
+
# that can be created, then the method attempts to create the resource.
|
40
|
+
# The resource is updated otherwise.
|
41
|
+
#
|
42
|
+
# ==== Attributes
|
43
|
+
#
|
44
|
+
# * +params+ - Overrides any parameters in the resource's serialized data
|
45
|
+
# and includes them in the create or update. If +:req_url:+ is included
|
46
|
+
# in the list, it overrides the update URL used for the create or
|
47
|
+
# update.
|
48
|
+
# * +opts+ - A Hash of additional options (separate from the params /
|
49
|
+
# object values) to be added to the request. E.g. to allow for an
|
50
|
+
# idempotency_key to be passed in the request headers, or for the
|
51
|
+
# api_key to be overwritten. See
|
52
|
+
# {APIOperations::Request.execute_resource_request}.
|
53
|
+
def save(params = {}, opts = {})
|
54
|
+
# We started unintentionally (sort of) allowing attributes sent to
|
55
|
+
# +save+ to override values used during the update. So as not to break
|
56
|
+
# the API, this makes that official here.
|
57
|
+
update_attributes(params)
|
58
|
+
|
59
|
+
# Now remove any parameters that look like object attributes.
|
60
|
+
params = params.reject { |k, _| respond_to?(k) }
|
61
|
+
|
62
|
+
values = serialize_params(self).merge(params)
|
63
|
+
|
64
|
+
resp, opts = execute_resource_request(:post, resource_url, values, opts, ["save"])
|
65
|
+
initialize_from(resp.data, opts, resp)
|
66
|
+
end
|
67
|
+
extend Gem::Deprecate
|
68
|
+
deprecate :save, "the `update` class method (for examples " \
|
69
|
+
"see https://github.com/stripe/stripe-ruby" \
|
70
|
+
"/wiki/Migration-guide-for-v8)", 2022, 11
|
71
|
+
|
72
|
+
def self.included(base)
|
73
|
+
# Set `metadata` as additive so that when it's set directly we remember
|
74
|
+
# to clear keys that may have been previously set by sending empty
|
75
|
+
# values for them.
|
76
|
+
#
|
77
|
+
# It's possible that not every object with `Save` has `metadata`, but
|
78
|
+
# it's a close enough heuristic, and having this option set when there
|
79
|
+
# is no `metadata` field is not harmful.
|
80
|
+
base.additive_object_param(:metadata)
|
81
|
+
|
82
|
+
base.extend(ClassMethods)
|
83
|
+
end
|
84
|
+
end
|
85
|
+
end
|
86
|
+
end
|
data/lib/stripe/api_resource.rb
CHANGED
@@ -11,6 +11,15 @@ module Stripe
|
|
11
11
|
# for example, where this is allowed.
|
12
12
|
attr_accessor :save_with_parent
|
13
13
|
|
14
|
+
# TODO: (major) Remove OBJECT_NAME and stop using const_get here
|
15
|
+
# This is a workaround to avoid breaking users who have defined their own
|
16
|
+
# APIResource subclasses with a custom OBJECT_NAME. We should never fallback
|
17
|
+
# on this case otherwise.
|
18
|
+
OBJECT_NAME = ""
|
19
|
+
def self.object_name
|
20
|
+
const_get(:OBJECT_NAME)
|
21
|
+
end
|
22
|
+
|
14
23
|
def self.class_name
|
15
24
|
name.split("::")[-1]
|
16
25
|
end
|
@@ -23,7 +32,7 @@ module Stripe
|
|
23
32
|
end
|
24
33
|
# Namespaces are separated in object names with periods (.) and in URLs
|
25
34
|
# with forward slashes (/), so replace the former with the latter.
|
26
|
-
"/v1/#{
|
35
|
+
"/v1/#{object_name.downcase.tr('.', '/')}s"
|
27
36
|
end
|
28
37
|
|
29
38
|
# A metaprogramming call that specifies that a field of a resource can be
|
@@ -80,7 +89,7 @@ module Stripe
|
|
80
89
|
def refresh
|
81
90
|
resp, opts = execute_resource_request(:get, resource_url,
|
82
91
|
@retrieve_params)
|
83
|
-
initialize_from(resp.data, opts)
|
92
|
+
initialize_from(resp.data, opts, resp)
|
84
93
|
end
|
85
94
|
|
86
95
|
def self.retrieve(id, opts = {})
|
@@ -95,9 +104,9 @@ module Stripe
|
|
95
104
|
|
96
105
|
# If we're getting back this thing, update; otherwise, instantiate.
|
97
106
|
if Util.object_name_matches_class?(resp.data[:object], self.class)
|
98
|
-
initialize_from(resp.data, opts)
|
107
|
+
initialize_from(resp.data, opts, resp)
|
99
108
|
else
|
100
|
-
Util.convert_to_stripe_object_with_params(resp.data, params, opts)
|
109
|
+
Util.convert_to_stripe_object_with_params(resp.data, params, opts, resp)
|
101
110
|
end
|
102
111
|
end
|
103
112
|
|
@@ -14,6 +14,10 @@ module Stripe
|
|
14
14
|
@resource = resource
|
15
15
|
end
|
16
16
|
|
17
|
+
def self.resource_class
|
18
|
+
nil
|
19
|
+
end
|
20
|
+
|
17
21
|
# Adds a custom method to a test helper. This is used to add support for
|
18
22
|
# non-CRUDL API requests, e.g. capturing charges. custom_method takes the
|
19
23
|
# following parameters:
|
@@ -27,12 +31,12 @@ module Stripe
|
|
27
31
|
# adds a `capture` class method to the resource class that, when called,
|
28
32
|
# will send a POST request to `/v1/<object_name>/capture`.
|
29
33
|
def self.custom_method(name, http_verb:, http_path: nil)
|
30
|
-
Util.custom_method
|
34
|
+
Util.custom_method resource_class, self, name, http_verb, http_path
|
31
35
|
end
|
32
36
|
|
33
37
|
def self.resource_url
|
34
|
-
"/v1/test_helpers/"\
|
35
|
-
|
38
|
+
"/v1/test_helpers/" \
|
39
|
+
"#{resource_class.object_name.downcase.tr('.', '/')}s"
|
36
40
|
end
|
37
41
|
|
38
42
|
def resource_url
|
data/lib/stripe/api_version.rb
CHANGED
@@ -157,9 +157,7 @@ module Stripe
|
|
157
157
|
|
158
158
|
connection.open_timeout = config.open_timeout
|
159
159
|
connection.read_timeout = config.read_timeout
|
160
|
-
if connection.respond_to?(:write_timeout=)
|
161
|
-
connection.write_timeout = config.write_timeout
|
162
|
-
end
|
160
|
+
connection.write_timeout = config.write_timeout if connection.respond_to?(:write_timeout=)
|
163
161
|
|
164
162
|
connection.use_ssl = uri.scheme == "https"
|
165
163
|
|
@@ -192,9 +190,9 @@ module Stripe
|
|
192
190
|
|
193
191
|
@verify_ssl_warned = true
|
194
192
|
warn("WARNING: Running without SSL cert verification. " \
|
195
|
-
|
196
|
-
|
197
|
-
|
193
|
+
"You should never do this in production. " \
|
194
|
+
"Execute `Stripe.verify_ssl_certs = true` to enable " \
|
195
|
+
"verification.")
|
198
196
|
end
|
199
197
|
end
|
200
198
|
end
|
data/lib/stripe/errors.rb
CHANGED
@@ -4,22 +4,14 @@ module Stripe
|
|
4
4
|
# StripeError is the base error from which all other more specific Stripe
|
5
5
|
# errors derive.
|
6
6
|
class StripeError < StandardError
|
7
|
-
attr_reader :message
|
7
|
+
attr_reader :message, :code, :error, :http_body, :http_headers, :http_status, :json_body, :request_id
|
8
8
|
|
9
9
|
# Response contains a StripeResponse object that has some basic information
|
10
10
|
# about the response that conveyed the error.
|
11
|
-
attr_accessor :response
|
12
|
-
|
13
|
-
attr_reader :code
|
14
|
-
attr_reader :error
|
15
|
-
attr_reader :http_body
|
16
|
-
attr_reader :http_headers
|
17
|
-
attr_reader :http_status
|
18
|
-
attr_reader :json_body # equivalent to #data
|
19
|
-
attr_reader :request_id
|
11
|
+
attr_accessor :response # equivalent to #data
|
20
12
|
|
21
13
|
# Initializes a StripeError.
|
22
|
-
def initialize(message = nil, http_status: nil, http_body: nil,
|
14
|
+
def initialize(message = nil, http_status: nil, http_body: nil, # rubocop:todo Lint/MissingSuper
|
23
15
|
json_body: nil, http_headers: nil, code: nil)
|
24
16
|
@message = message
|
25
17
|
@http_status = http_status
|
@@ -4,8 +4,7 @@ module Stripe
|
|
4
4
|
class Instrumentation
|
5
5
|
# Event emitted on `request_begin` callback.
|
6
6
|
class RequestBeginEvent
|
7
|
-
attr_reader :method
|
8
|
-
attr_reader :path
|
7
|
+
attr_reader :method, :path
|
9
8
|
|
10
9
|
# Arbitrary user-provided data in the form of a Ruby hash that's passed
|
11
10
|
# from subscribers on `request_begin` to subscribers on `request_end`.
|
@@ -27,16 +26,8 @@ module Stripe
|
|
27
26
|
|
28
27
|
# Event emitted on `request_end` callback.
|
29
28
|
class RequestEndEvent
|
30
|
-
attr_reader :duration
|
31
|
-
|
32
|
-
attr_reader :method
|
33
|
-
attr_reader :num_retries
|
34
|
-
attr_reader :path
|
35
|
-
attr_reader :request_id
|
36
|
-
attr_reader :response_header
|
37
|
-
attr_reader :response_body
|
38
|
-
attr_reader :request_header
|
39
|
-
attr_reader :request_body
|
29
|
+
attr_reader :duration, :http_status, :method, :num_retries, :path, :request_id, :response_header, :response_body,
|
30
|
+
:request_header, :request_body
|
40
31
|
|
41
32
|
# Arbitrary user-provided data in the form of a Ruby hash that's passed
|
42
33
|
# from subscribers on `request_begin` to subscribers on `request_end`.
|
@@ -62,12 +53,7 @@ module Stripe
|
|
62
53
|
end
|
63
54
|
|
64
55
|
class RequestContext
|
65
|
-
attr_reader :duration
|
66
|
-
attr_reader :method
|
67
|
-
attr_reader :path
|
68
|
-
attr_reader :request_id
|
69
|
-
attr_reader :body
|
70
|
-
attr_reader :header
|
56
|
+
attr_reader :duration, :method, :path, :request_id, :body, :header
|
71
57
|
|
72
58
|
def initialize(duration:, context:, header:)
|
73
59
|
@duration = duration
|
@@ -80,9 +66,7 @@ module Stripe
|
|
80
66
|
end
|
81
67
|
|
82
68
|
class ResponseContext
|
83
|
-
attr_reader :http_status
|
84
|
-
attr_reader :body
|
85
|
-
attr_reader :header
|
69
|
+
attr_reader :http_status, :body, :header
|
86
70
|
|
87
71
|
def initialize(http_status:, response:)
|
88
72
|
@http_status = http_status
|
data/lib/stripe/list_object.rb
CHANGED
@@ -8,6 +8,9 @@ module Stripe
|
|
8
8
|
include Stripe::APIOperations::Create
|
9
9
|
|
10
10
|
OBJECT_NAME = "list"
|
11
|
+
def self.object_name
|
12
|
+
"list"
|
13
|
+
end
|
11
14
|
|
12
15
|
# This accessor allows a `ListObject` to inherit various filters that were
|
13
16
|
# given to a predecessor. This allows for things like consistent limits,
|
@@ -106,22 +106,22 @@ module Stripe
|
|
106
106
|
end
|
107
107
|
|
108
108
|
private def write_field(name, data, filename:)
|
109
|
-
if
|
110
|
-
@body << "\r\n"
|
111
|
-
else
|
109
|
+
if @first_field
|
112
110
|
@first_field = false
|
111
|
+
else
|
112
|
+
@body << "\r\n"
|
113
113
|
end
|
114
114
|
|
115
115
|
@body << "--#{@boundary}\r\n"
|
116
116
|
|
117
117
|
if filename
|
118
|
-
@body << %(Content-Disposition: form-data) +
|
118
|
+
@body << (%(Content-Disposition: form-data) +
|
119
119
|
%(; name="#{escape(name.to_s)}") +
|
120
|
-
%(; filename="#{escape(filename)}"\r\n)
|
120
|
+
%(; filename="#{escape(filename)}"\r\n))
|
121
121
|
@body << %(Content-Type: application/octet-stream\r\n)
|
122
122
|
else
|
123
|
-
@body << %(Content-Disposition: form-data) +
|
124
|
-
%(; name="#{escape(name.to_s)}"\r\n)
|
123
|
+
@body << (%(Content-Disposition: form-data) +
|
124
|
+
%(; name="#{escape(name.to_s)}"\r\n))
|
125
125
|
end
|
126
126
|
|
127
127
|
@body << "\r\n"
|
data/lib/stripe/oauth.rb
CHANGED
@@ -18,12 +18,12 @@ module Stripe
|
|
18
18
|
client_id = params[:client_id] || Stripe.client_id
|
19
19
|
unless client_id
|
20
20
|
raise AuthenticationError, "No client_id provided. " \
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
21
|
+
'Set your client_id using "Stripe.client_id = <CLIENT-ID>". ' \
|
22
|
+
"You can find your client_ids in your Stripe dashboard at " \
|
23
|
+
"https://dashboard.stripe.com/account/applications/settings, " \
|
24
|
+
"after registering your account as a platform. See " \
|
25
|
+
"https://stripe.com/docs/connect/standalone-accounts for details, " \
|
26
|
+
"or email support@stripe.com if you have any questions."
|
27
27
|
end
|
28
28
|
client_id
|
29
29
|
end
|