stripe 5.20.0 → 5.24.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/.rubocop.yml +4 -4
- data/.travis.yml +1 -1
- data/CHANGELOG.md +16 -0
- data/VERSION +1 -1
- data/lib/stripe.rb +32 -166
- data/lib/stripe/api_operations/create.rb +1 -1
- data/lib/stripe/api_operations/delete.rb +7 -3
- data/lib/stripe/api_operations/list.rb +1 -1
- data/lib/stripe/api_operations/nested_resource.rb +6 -5
- data/lib/stripe/api_operations/request.rb +19 -3
- data/lib/stripe/api_operations/save.rb +7 -4
- data/lib/stripe/api_resource.rb +4 -3
- data/lib/stripe/list_object.rb +2 -2
- data/lib/stripe/oauth.rb +3 -3
- data/lib/stripe/object_types.rb +3 -0
- data/lib/stripe/resources.rb +3 -0
- data/lib/stripe/resources/account.rb +2 -1
- data/lib/stripe/resources/account_link.rb +1 -0
- data/lib/stripe/resources/apple_pay_domain.rb +1 -0
- data/lib/stripe/resources/application_fee.rb +1 -0
- data/lib/stripe/resources/balance.rb +1 -0
- data/lib/stripe/resources/balance_transaction.rb +1 -0
- data/lib/stripe/resources/bank_account.rb +2 -1
- data/lib/stripe/resources/billing_portal/session.rb +1 -0
- data/lib/stripe/resources/bitcoin_receiver.rb +1 -0
- data/lib/stripe/resources/card.rb +1 -0
- data/lib/stripe/resources/charge.rb +1 -0
- data/lib/stripe/resources/checkout/session.rb +4 -0
- data/lib/stripe/resources/country_spec.rb +1 -0
- data/lib/stripe/resources/coupon.rb +1 -0
- data/lib/stripe/resources/credit_note.rb +3 -2
- data/lib/stripe/resources/customer.rb +2 -1
- data/lib/stripe/resources/dispute.rb +1 -0
- data/lib/stripe/resources/ephemeral_key.rb +1 -0
- data/lib/stripe/resources/event.rb +1 -0
- data/lib/stripe/resources/exchange_rate.rb +1 -0
- data/lib/stripe/resources/file.rb +1 -0
- data/lib/stripe/resources/file_link.rb +1 -0
- data/lib/stripe/resources/invoice.rb +3 -2
- data/lib/stripe/resources/invoice_item.rb +1 -0
- data/lib/stripe/resources/issuing/authorization.rb +1 -0
- data/lib/stripe/resources/issuing/card.rb +1 -0
- data/lib/stripe/resources/issuing/cardholder.rb +1 -0
- data/lib/stripe/resources/issuing/dispute.rb +1 -0
- data/lib/stripe/resources/issuing/transaction.rb +1 -0
- data/lib/stripe/resources/line_item.rb +7 -0
- data/lib/stripe/resources/mandate.rb +1 -0
- data/lib/stripe/resources/order.rb +1 -0
- data/lib/stripe/resources/order_return.rb +1 -0
- data/lib/stripe/resources/payment_intent.rb +1 -0
- data/lib/stripe/resources/payment_method.rb +1 -0
- data/lib/stripe/resources/payout.rb +1 -0
- data/lib/stripe/resources/plan.rb +1 -0
- data/lib/stripe/resources/price.rb +12 -0
- data/lib/stripe/resources/product.rb +1 -0
- data/lib/stripe/resources/promotion_code.rb +12 -0
- data/lib/stripe/resources/radar/early_fraud_warning.rb +1 -0
- data/lib/stripe/resources/radar/value_list.rb +1 -0
- data/lib/stripe/resources/radar/value_list_item.rb +1 -0
- data/lib/stripe/resources/recipient.rb +1 -0
- data/lib/stripe/resources/refund.rb +1 -0
- data/lib/stripe/resources/reporting/report_run.rb +1 -0
- data/lib/stripe/resources/reporting/report_type.rb +1 -0
- data/lib/stripe/resources/review.rb +1 -0
- data/lib/stripe/resources/setup_intent.rb +1 -0
- data/lib/stripe/resources/sigma/scheduled_query_run.rb +1 -0
- data/lib/stripe/resources/sku.rb +1 -0
- data/lib/stripe/resources/source.rb +4 -3
- data/lib/stripe/resources/subscription.rb +1 -0
- data/lib/stripe/resources/subscription_item.rb +2 -1
- data/lib/stripe/resources/subscription_schedule.rb +1 -0
- data/lib/stripe/resources/tax_rate.rb +1 -0
- data/lib/stripe/resources/terminal/connection_token.rb +1 -0
- data/lib/stripe/resources/terminal/location.rb +1 -0
- data/lib/stripe/resources/terminal/reader.rb +1 -0
- data/lib/stripe/resources/three_d_secure.rb +1 -0
- data/lib/stripe/resources/token.rb +1 -0
- data/lib/stripe/resources/topup.rb +1 -0
- data/lib/stripe/resources/transfer.rb +1 -0
- data/lib/stripe/resources/webhook_endpoint.rb +1 -0
- data/lib/stripe/stripe_configuration.rb +167 -0
- data/lib/stripe/stripe_object.rb +1 -1
- data/lib/stripe/version.rb +1 -1
- data/test/stripe/account_link_test.rb +3 -3
- data/test/stripe/checkout/session_test.rb +12 -0
- data/test/stripe/price_test.rb +48 -0
- data/test/stripe/promotion_code_test.rb +42 -0
- data/test/stripe/stripe_configuration_test.rb +128 -0
- data/test/stripe/subscription_item_test.rb +1 -1
- data/test/stripe_test.rb +88 -19
- data/test/test_helper.rb +1 -1
- metadata +12 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: dad4d3bffd7ba2748a3331de5d3b97108732144b33818a5e79efd6eb597e4834
|
4
|
+
data.tar.gz: c46abe2511c5316276921da29766c22aed11bb92b136b53fb7ea82fb542640c5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 824c459fec4234b09e6d04d20b79728db4ccd19e0dc5cbe9874d319a995b62cb7c252dff31fad3c0fae295682bd68cfbb9fb52f0e98044f3708f1999c0f55d16
|
7
|
+
data.tar.gz: 6f1557c58e7c0ab6e407444208c142953889ec1f2746464804cf38d6766550aca0577902982211a696522f47e5ffc06d304f17c4fc7b4fdfbe60c1603077a72d
|
data/.rubocop.yml
CHANGED
@@ -44,10 +44,10 @@ Metrics/ClassLength:
|
|
44
44
|
- "test/**/*.rb"
|
45
45
|
|
46
46
|
Metrics/MethodLength:
|
47
|
-
# There's ~2 long methods in `StripeClient
|
48
|
-
# little, we could move this to be closer to ~30
|
49
|
-
# probably too short).
|
50
|
-
Max:
|
47
|
+
# There's ~2 long methods in `StripeClient` and one in `NestedResource`. If
|
48
|
+
# we want to truncate those a little, we could move this to be closer to ~30
|
49
|
+
# (but the default of 10 is probably too short).
|
50
|
+
Max: 55
|
51
51
|
|
52
52
|
Metrics/ModuleLength:
|
53
53
|
Enabled: false
|
data/.travis.yml
CHANGED
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,21 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
|
+
## 5.24.0 - 2020-08-26
|
4
|
+
* [#939](https://github.com/stripe/stripe-ruby/pull/939) Extract configurations into separate object
|
5
|
+
* [#940](https://github.com/stripe/stripe-ruby/pull/940) Fix typo in documentation of `stripe_object.rb`
|
6
|
+
|
7
|
+
## 5.23.1 - 2020-08-05
|
8
|
+
* [#936](https://github.com/stripe/stripe-ruby/pull/936) Rename API resource's `request` method
|
9
|
+
|
10
|
+
## 5.23.0 - 2020-08-05
|
11
|
+
* [#937](https://github.com/stripe/stripe-ruby/pull/937) Add support for the `PromotionCode` resource and APIs
|
12
|
+
|
13
|
+
## 5.22.0 - 2020-05-11
|
14
|
+
* [#918](https://github.com/stripe/stripe-ruby/pull/918) Add support for the `LineItem` resource and APIs
|
15
|
+
|
16
|
+
## 5.21.0 - 2020-04-29
|
17
|
+
* [#917](https://github.com/stripe/stripe-ruby/pull/917) Add support for the `Price` resource and APIs
|
18
|
+
|
3
19
|
## 5.20.0 - 2020-04-27
|
4
20
|
* [#916](https://github.com/stripe/stripe-ruby/pull/916) Add new `.generate_header` method for webhooks
|
5
21
|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
5.
|
1
|
+
5.24.0
|
data/lib/stripe.rb
CHANGED
@@ -12,6 +12,7 @@ require "securerandom"
|
|
12
12
|
require "set"
|
13
13
|
require "socket"
|
14
14
|
require "uri"
|
15
|
+
require "forwardable"
|
15
16
|
|
16
17
|
# Version
|
17
18
|
require "stripe/version"
|
@@ -38,6 +39,7 @@ require "stripe/error_object"
|
|
38
39
|
require "stripe/api_resource"
|
39
40
|
require "stripe/singleton_api_resource"
|
40
41
|
require "stripe/webhook"
|
42
|
+
require "stripe/stripe_configuration"
|
41
43
|
|
42
44
|
# Named API resources
|
43
45
|
require "stripe/resources"
|
@@ -48,47 +50,41 @@ require "stripe/oauth"
|
|
48
50
|
module Stripe
|
49
51
|
DEFAULT_CA_BUNDLE_PATH = __dir__ + "/data/ca-certificates.crt"
|
50
52
|
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
@uploads_base = "https://files.stripe.com"
|
56
|
-
|
57
|
-
@log_level = nil
|
58
|
-
@logger = nil
|
59
|
-
|
60
|
-
@proxy = nil
|
61
|
-
|
62
|
-
@max_network_retries = 0
|
63
|
-
@max_network_retry_delay = 2
|
64
|
-
@initial_network_retry_delay = 0.5
|
65
|
-
|
66
|
-
@ca_bundle_path = DEFAULT_CA_BUNDLE_PATH
|
67
|
-
@ca_store = nil
|
68
|
-
@verify_ssl_certs = true
|
53
|
+
# map to the same values as the standard library's logger
|
54
|
+
LEVEL_DEBUG = Logger::DEBUG
|
55
|
+
LEVEL_ERROR = Logger::ERROR
|
56
|
+
LEVEL_INFO = Logger::INFO
|
69
57
|
|
70
|
-
@
|
71
|
-
@read_timeout = 80
|
58
|
+
@app_info = nil
|
72
59
|
|
73
|
-
@
|
60
|
+
@configuration = Stripe::StripeConfiguration.setup
|
74
61
|
|
75
62
|
class << self
|
76
|
-
|
77
|
-
|
63
|
+
extend Forwardable
|
64
|
+
|
65
|
+
# User configurable options
|
66
|
+
def_delegators :@configuration, :api_key, :api_key=
|
67
|
+
def_delegators :@configuration, :api_version, :api_version=
|
68
|
+
def_delegators :@configuration, :stripe_account, :stripe_account=
|
69
|
+
def_delegators :@configuration, :api_base, :api_base=
|
70
|
+
def_delegators :@configuration, :uploads_base, :uploads_base=
|
71
|
+
def_delegators :@configuration, :connect_base, :connect_base=
|
72
|
+
def_delegators :@configuration, :open_timeout, :open_timeout=
|
73
|
+
def_delegators :@configuration, :read_timeout, :read_timeout=
|
74
|
+
def_delegators :@configuration, :proxy, :proxy=
|
75
|
+
def_delegators :@configuration, :verify_ssl_certs, :verify_ssl_certs=
|
76
|
+
def_delegators :@configuration, :ca_bundle_path, :ca_bundle_path=
|
77
|
+
def_delegators :@configuration, :log_level, :log_level=
|
78
|
+
def_delegators :@configuration, :logger, :logger=
|
79
|
+
def_delegators :@configuration, :max_network_retries, :max_network_retries=
|
80
|
+
def_delegators :@configuration, :enable_telemetry=, :enable_telemetry?
|
81
|
+
|
82
|
+
# Internal configurations
|
83
|
+
def_delegators :@configuration, :max_network_retry_delay
|
84
|
+
def_delegators :@configuration, :initial_network_retry_delay
|
85
|
+
def_delegators :@configuration, :ca_store
|
86
|
+
|
78
87
|
attr_accessor :client_id
|
79
|
-
attr_accessor :stripe_account
|
80
|
-
|
81
|
-
# These all get manual attribute writers so that we can reset connections
|
82
|
-
# if they change.
|
83
|
-
attr_reader :api_base
|
84
|
-
attr_reader :connect_base
|
85
|
-
attr_reader :open_timeout
|
86
|
-
attr_reader :proxy
|
87
|
-
attr_reader :read_timeout
|
88
|
-
attr_reader :uploads_base
|
89
|
-
attr_reader :verify_ssl_certs
|
90
|
-
|
91
|
-
attr_reader :max_network_retry_delay, :initial_network_retry_delay
|
92
88
|
end
|
93
89
|
|
94
90
|
# Gets the application for a plugin that's identified some. See
|
@@ -101,126 +97,6 @@ module Stripe
|
|
101
97
|
@app_info = info
|
102
98
|
end
|
103
99
|
|
104
|
-
def self.api_base=(api_base)
|
105
|
-
@api_base = api_base
|
106
|
-
StripeClient.clear_all_connection_managers
|
107
|
-
end
|
108
|
-
|
109
|
-
# The location of a file containing a bundle of CA certificates. By default
|
110
|
-
# the library will use an included bundle that can successfully validate
|
111
|
-
# Stripe certificates.
|
112
|
-
def self.ca_bundle_path
|
113
|
-
@ca_bundle_path
|
114
|
-
end
|
115
|
-
|
116
|
-
def self.ca_bundle_path=(path)
|
117
|
-
@ca_bundle_path = path
|
118
|
-
|
119
|
-
# empty this field so a new store is initialized
|
120
|
-
@ca_store = nil
|
121
|
-
|
122
|
-
StripeClient.clear_all_connection_managers
|
123
|
-
end
|
124
|
-
|
125
|
-
# A certificate store initialized from the the bundle in #ca_bundle_path and
|
126
|
-
# which is used to validate TLS on every request.
|
127
|
-
#
|
128
|
-
# This was added to the give the gem "pseudo thread safety" in that it seems
|
129
|
-
# when initiating many parallel requests marshaling the certificate store is
|
130
|
-
# the most likely point of failure (see issue #382). Any program attempting
|
131
|
-
# to leverage this pseudo safety should make a call to this method (i.e.
|
132
|
-
# `Stripe.ca_store`) in their initialization code because it marshals lazily
|
133
|
-
# and is itself not thread safe.
|
134
|
-
def self.ca_store
|
135
|
-
@ca_store ||= begin
|
136
|
-
store = OpenSSL::X509::Store.new
|
137
|
-
store.add_file(ca_bundle_path)
|
138
|
-
store
|
139
|
-
end
|
140
|
-
end
|
141
|
-
|
142
|
-
def self.connect_base=(connect_base)
|
143
|
-
@connect_base = connect_base
|
144
|
-
StripeClient.clear_all_connection_managers
|
145
|
-
end
|
146
|
-
|
147
|
-
def self.enable_telemetry?
|
148
|
-
@enable_telemetry
|
149
|
-
end
|
150
|
-
|
151
|
-
def self.enable_telemetry=(val)
|
152
|
-
@enable_telemetry = val
|
153
|
-
end
|
154
|
-
|
155
|
-
# map to the same values as the standard library's logger
|
156
|
-
LEVEL_DEBUG = Logger::DEBUG
|
157
|
-
LEVEL_ERROR = Logger::ERROR
|
158
|
-
LEVEL_INFO = Logger::INFO
|
159
|
-
|
160
|
-
# When set prompts the library to log some extra information to $stdout and
|
161
|
-
# $stderr about what it's doing. For example, it'll produce information about
|
162
|
-
# requests, responses, and errors that are received. Valid log levels are
|
163
|
-
# `debug` and `info`, with `debug` being a little more verbose in places.
|
164
|
-
#
|
165
|
-
# Use of this configuration is only useful when `.logger` is _not_ set. When
|
166
|
-
# it is, the decision what levels to print is entirely deferred to the logger.
|
167
|
-
def self.log_level
|
168
|
-
@log_level
|
169
|
-
end
|
170
|
-
|
171
|
-
def self.log_level=(val)
|
172
|
-
# Backwards compatibility for values that we briefly allowed
|
173
|
-
if val == "debug"
|
174
|
-
val = LEVEL_DEBUG
|
175
|
-
elsif val == "info"
|
176
|
-
val = LEVEL_INFO
|
177
|
-
end
|
178
|
-
|
179
|
-
if !val.nil? && ![LEVEL_DEBUG, LEVEL_ERROR, LEVEL_INFO].include?(val)
|
180
|
-
raise ArgumentError,
|
181
|
-
"log_level should only be set to `nil`, `debug` or `info`"
|
182
|
-
end
|
183
|
-
@log_level = val
|
184
|
-
end
|
185
|
-
|
186
|
-
# Sets a logger to which logging output will be sent. The logger should
|
187
|
-
# support the same interface as the `Logger` class that's part of Ruby's
|
188
|
-
# standard library (hint, anything in `Rails.logger` will likely be
|
189
|
-
# suitable).
|
190
|
-
#
|
191
|
-
# If `.logger` is set, the value of `.log_level` is ignored. The decision on
|
192
|
-
# what levels to print is entirely deferred to the logger.
|
193
|
-
def self.logger
|
194
|
-
@logger
|
195
|
-
end
|
196
|
-
|
197
|
-
def self.logger=(val)
|
198
|
-
@logger = val
|
199
|
-
end
|
200
|
-
|
201
|
-
def self.max_network_retries
|
202
|
-
@max_network_retries
|
203
|
-
end
|
204
|
-
|
205
|
-
def self.max_network_retries=(val)
|
206
|
-
@max_network_retries = val.to_i
|
207
|
-
end
|
208
|
-
|
209
|
-
def self.open_timeout=(open_timeout)
|
210
|
-
@open_timeout = open_timeout
|
211
|
-
StripeClient.clear_all_connection_managers
|
212
|
-
end
|
213
|
-
|
214
|
-
def self.proxy=(proxy)
|
215
|
-
@proxy = proxy
|
216
|
-
StripeClient.clear_all_connection_managers
|
217
|
-
end
|
218
|
-
|
219
|
-
def self.read_timeout=(read_timeout)
|
220
|
-
@read_timeout = read_timeout
|
221
|
-
StripeClient.clear_all_connection_managers
|
222
|
-
end
|
223
|
-
|
224
100
|
# Sets some basic information about the running application that's sent along
|
225
101
|
# with API requests. Useful for plugin authors to identify their plugin when
|
226
102
|
# communicating with Stripe.
|
@@ -234,16 +110,6 @@ module Stripe
|
|
234
110
|
version: version,
|
235
111
|
}
|
236
112
|
end
|
237
|
-
|
238
|
-
def self.uploads_base=(uploads_base)
|
239
|
-
@uploads_base = uploads_base
|
240
|
-
StripeClient.clear_all_connection_managers
|
241
|
-
end
|
242
|
-
|
243
|
-
def self.verify_ssl_certs=(verify_ssl_certs)
|
244
|
-
@verify_ssl_certs = verify_ssl_certs
|
245
|
-
StripeClient.clear_all_connection_managers
|
246
|
-
end
|
247
113
|
end
|
248
114
|
|
249
115
|
Stripe.log_level = ENV["STRIPE_LOG"] unless ENV["STRIPE_LOG"].nil?
|
@@ -4,7 +4,7 @@ module Stripe
|
|
4
4
|
module APIOperations
|
5
5
|
module Create
|
6
6
|
def create(params = {}, opts = {})
|
7
|
-
resp, opts =
|
7
|
+
resp, opts = execute_resource_request(:post, resource_url, params, opts)
|
8
8
|
Util.convert_to_stripe_object(resp.data, opts)
|
9
9
|
end
|
10
10
|
end
|
@@ -15,15 +15,19 @@ module Stripe
|
|
15
15
|
# * +opts+ - A Hash of additional options (separate from the params /
|
16
16
|
# object values) to be added to the request. E.g. to allow for an
|
17
17
|
# idempotency_key to be passed in the request headers, or for the
|
18
|
-
# api_key to be overwritten. See
|
18
|
+
# api_key to be overwritten. See
|
19
|
+
# {APIOperations::Request.execute_resource_request}.
|
19
20
|
def delete(id, params = {}, opts = {})
|
20
|
-
resp, opts =
|
21
|
+
resp, opts = execute_resource_request(:delete,
|
22
|
+
"#{resource_url}/#{id}",
|
23
|
+
params, opts)
|
21
24
|
Util.convert_to_stripe_object(resp.data, opts)
|
22
25
|
end
|
23
26
|
end
|
24
27
|
|
25
28
|
def delete(params = {}, opts = {})
|
26
|
-
resp, opts =
|
29
|
+
resp, opts = execute_resource_request(:delete, resource_url,
|
30
|
+
params, opts)
|
27
31
|
initialize_from(resp.data, opts)
|
28
32
|
end
|
29
33
|
|
@@ -6,7 +6,7 @@ module Stripe
|
|
6
6
|
def list(filters = {}, opts = {})
|
7
7
|
opts = Util.normalize_opts(opts)
|
8
8
|
|
9
|
-
resp, opts =
|
9
|
+
resp, opts = execute_resource_request(:get, resource_url, filters, opts)
|
10
10
|
obj = ListObject.construct_from(resp.data, opts)
|
11
11
|
|
12
12
|
# set filters so that we can fetch the same limit, expansions, and
|
@@ -31,35 +31,36 @@ module Stripe
|
|
31
31
|
define_singleton_method(:"create_#{resource}") \
|
32
32
|
do |id, params = {}, opts = {}|
|
33
33
|
url = send(resource_url_method, id)
|
34
|
-
resp, opts =
|
34
|
+
resp, opts = execute_resource_request(:post, url, params, opts)
|
35
35
|
Util.convert_to_stripe_object(resp.data, opts)
|
36
36
|
end
|
37
37
|
when :retrieve
|
38
38
|
define_singleton_method(:"retrieve_#{resource}") \
|
39
39
|
do |id, nested_id, opts = {}|
|
40
40
|
url = send(resource_url_method, id, nested_id)
|
41
|
-
resp, opts =
|
41
|
+
resp, opts = execute_resource_request(:get, url, {}, opts)
|
42
42
|
Util.convert_to_stripe_object(resp.data, opts)
|
43
43
|
end
|
44
44
|
when :update
|
45
45
|
define_singleton_method(:"update_#{resource}") \
|
46
46
|
do |id, nested_id, params = {}, opts = {}|
|
47
47
|
url = send(resource_url_method, id, nested_id)
|
48
|
-
resp, opts =
|
48
|
+
resp, opts = execute_resource_request(:post, url, params, opts)
|
49
49
|
Util.convert_to_stripe_object(resp.data, opts)
|
50
50
|
end
|
51
51
|
when :delete
|
52
52
|
define_singleton_method(:"delete_#{resource}") \
|
53
53
|
do |id, nested_id, params = {}, opts = {}|
|
54
54
|
url = send(resource_url_method, id, nested_id)
|
55
|
-
resp, opts =
|
55
|
+
resp, opts = execute_resource_request(:delete, url, params,
|
56
|
+
opts)
|
56
57
|
Util.convert_to_stripe_object(resp.data, opts)
|
57
58
|
end
|
58
59
|
when :list
|
59
60
|
define_singleton_method(:"list_#{resource_plural}") \
|
60
61
|
do |id, params = {}, opts = {}|
|
61
62
|
url = send(resource_url_method, id)
|
62
|
-
resp, opts =
|
63
|
+
resp, opts = execute_resource_request(:get, url, params, opts)
|
63
64
|
Util.convert_to_stripe_object(resp.data, opts)
|
64
65
|
end
|
65
66
|
else
|
@@ -4,7 +4,8 @@ module Stripe
|
|
4
4
|
module APIOperations
|
5
5
|
module Request
|
6
6
|
module ClassMethods
|
7
|
-
def
|
7
|
+
def execute_resource_request(method, url,
|
8
|
+
params = {}, opts = {})
|
8
9
|
params ||= {}
|
9
10
|
|
10
11
|
error_on_invalid_params(params)
|
@@ -36,6 +37,17 @@ module Stripe
|
|
36
37
|
[resp, opts_to_persist]
|
37
38
|
end
|
38
39
|
|
40
|
+
# This method used to be called `request`, but it's such a short name
|
41
|
+
# that it eventually conflicted with the name of a field on an API
|
42
|
+
# resource (specifically, `Event#request`), so it was renamed to
|
43
|
+
# something more unique.
|
44
|
+
#
|
45
|
+
# The former name had been around for just about forever though, and
|
46
|
+
# although all internal uses have been renamed, I've left this alias in
|
47
|
+
# place for backwards compatibility. Consider removing it on the next
|
48
|
+
# major.
|
49
|
+
alias request execute_resource_request
|
50
|
+
|
39
51
|
private def error_on_non_string_user_opts(opts)
|
40
52
|
Util::OPTS_USER_SPECIFIED.each do |opt|
|
41
53
|
next unless opts.key?(opt)
|
@@ -71,10 +83,14 @@ module Stripe
|
|
71
83
|
base.extend(ClassMethods)
|
72
84
|
end
|
73
85
|
|
74
|
-
protected def
|
86
|
+
protected def execute_resource_request(method, url,
|
87
|
+
params = {}, opts = {})
|
75
88
|
opts = @opts.merge(Util.normalize_opts(opts))
|
76
|
-
self.class.
|
89
|
+
self.class.execute_resource_request(method, url, params, opts)
|
77
90
|
end
|
91
|
+
|
92
|
+
# See notes on `alias` above.
|
93
|
+
alias request execute_resource_request
|
78
94
|
end
|
79
95
|
end
|
80
96
|
end
|
@@ -15,7 +15,8 @@ module Stripe
|
|
15
15
|
# * +opts+ - A Hash of additional options (separate from the params /
|
16
16
|
# object values) to be added to the request. E.g. to allow for an
|
17
17
|
# idempotency_key to be passed in the request headers, or for the
|
18
|
-
# api_key to be overwritten. See
|
18
|
+
# api_key to be overwritten. See
|
19
|
+
# {APIOperations::Request.execute_resource_request}.
|
19
20
|
def update(id, params = {}, opts = {})
|
20
21
|
params.each_key do |k|
|
21
22
|
if protected_fields.include?(k)
|
@@ -23,7 +24,8 @@ module Stripe
|
|
23
24
|
end
|
24
25
|
end
|
25
26
|
|
26
|
-
resp, opts =
|
27
|
+
resp, opts = execute_resource_request(:post, "#{resource_url}/#{id}",
|
28
|
+
params, opts)
|
27
29
|
Util.convert_to_stripe_object(resp.data, opts)
|
28
30
|
end
|
29
31
|
end
|
@@ -43,7 +45,8 @@ module Stripe
|
|
43
45
|
# * +opts+ - A Hash of additional options (separate from the params /
|
44
46
|
# object values) to be added to the request. E.g. to allow for an
|
45
47
|
# idempotency_key to be passed in the request headers, or for the
|
46
|
-
# api_key to be overwritten. See
|
48
|
+
# api_key to be overwritten. See
|
49
|
+
# {APIOperations::Request.execute_resource_request}.
|
47
50
|
def save(params = {}, opts = {})
|
48
51
|
# We started unintentionally (sort of) allowing attributes sent to
|
49
52
|
# +save+ to override values used during the update. So as not to break
|
@@ -59,7 +62,7 @@ module Stripe
|
|
59
62
|
# generated a uri for this object with an identifier baked in
|
60
63
|
values.delete(:id)
|
61
64
|
|
62
|
-
resp, opts =
|
65
|
+
resp, opts = execute_resource_request(:post, save_url, values, opts)
|
63
66
|
initialize_from(resp.data, opts)
|
64
67
|
end
|
65
68
|
|