diff --git a/.rubocop.yml b/.rubocop.yml index 476a482aa..90fb5e822 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -44,10 +44,10 @@ Metrics/ClassLength: - "test/**/*.rb" Metrics/MethodLength: - # There's ~2 long methods in `StripeClient`. If we want to truncate those a - # little, we could move this to be closer to ~30 (but the default of 10 is - # probably too short). - Max: 50 + # There's ~2 long methods in `StripeClient` and one in `NestedResource`. If + # we want to truncate those a little, we could move this to be closer to ~30 + # (but the default of 10 is probably too short). + Max: 55 Metrics/ModuleLength: Enabled: false diff --git a/lib/stripe/api_operations/create.rb b/lib/stripe/api_operations/create.rb index 831859e2e..e55ba099a 100644 --- a/lib/stripe/api_operations/create.rb +++ b/lib/stripe/api_operations/create.rb @@ -4,7 +4,7 @@ module Stripe module APIOperations module Create def create(params = {}, opts = {}) - resp, opts = request(:post, resource_url, params, opts) + resp, opts = execute_resource_request(:post, resource_url, params, opts) Util.convert_to_stripe_object(resp.data, opts) end end diff --git a/lib/stripe/api_operations/delete.rb b/lib/stripe/api_operations/delete.rb index e4676c284..1023e90ea 100644 --- a/lib/stripe/api_operations/delete.rb +++ b/lib/stripe/api_operations/delete.rb @@ -15,15 +15,19 @@ module ClassMethods # * +opts+ - A Hash of additional options (separate from the params / # object values) to be added to the request. E.g. to allow for an # idempotency_key to be passed in the request headers, or for the - # api_key to be overwritten. See {APIOperations::Request.request}. + # api_key to be overwritten. See + # {APIOperations::Request.execute_resource_request}. def delete(id, params = {}, opts = {}) - resp, opts = request(:delete, "#{resource_url}/#{id}", params, opts) + resp, opts = execute_resource_request(:delete, + "#{resource_url}/#{id}", + params, opts) Util.convert_to_stripe_object(resp.data, opts) end end def delete(params = {}, opts = {}) - resp, opts = request(:delete, resource_url, params, opts) + resp, opts = execute_resource_request(:delete, resource_url, + params, opts) initialize_from(resp.data, opts) end diff --git a/lib/stripe/api_operations/list.rb b/lib/stripe/api_operations/list.rb index 214172210..939c09389 100644 --- a/lib/stripe/api_operations/list.rb +++ b/lib/stripe/api_operations/list.rb @@ -6,7 +6,7 @@ module List def list(filters = {}, opts = {}) opts = Util.normalize_opts(opts) - resp, opts = request(:get, resource_url, filters, opts) + resp, opts = execute_resource_request(:get, resource_url, filters, opts) obj = ListObject.construct_from(resp.data, opts) # set filters so that we can fetch the same limit, expansions, and diff --git a/lib/stripe/api_operations/nested_resource.rb b/lib/stripe/api_operations/nested_resource.rb index 75d75a924..29dc8a8b6 100644 --- a/lib/stripe/api_operations/nested_resource.rb +++ b/lib/stripe/api_operations/nested_resource.rb @@ -31,35 +31,36 @@ def nested_resource_class_methods(resource, path: nil, operations: nil, define_singleton_method(:"create_#{resource}") \ do |id, params = {}, opts = {}| url = send(resource_url_method, id) - resp, opts = request(:post, url, params, opts) + resp, opts = execute_resource_request(:post, url, params, opts) Util.convert_to_stripe_object(resp.data, opts) end when :retrieve define_singleton_method(:"retrieve_#{resource}") \ do |id, nested_id, opts = {}| url = send(resource_url_method, id, nested_id) - resp, opts = request(:get, url, {}, opts) + resp, opts = execute_resource_request(:get, url, {}, opts) Util.convert_to_stripe_object(resp.data, opts) end when :update define_singleton_method(:"update_#{resource}") \ do |id, nested_id, params = {}, opts = {}| url = send(resource_url_method, id, nested_id) - resp, opts = request(:post, url, params, opts) + resp, opts = execute_resource_request(:post, url, params, opts) Util.convert_to_stripe_object(resp.data, opts) end when :delete define_singleton_method(:"delete_#{resource}") \ do |id, nested_id, params = {}, opts = {}| url = send(resource_url_method, id, nested_id) - resp, opts = request(:delete, url, params, opts) + resp, opts = execute_resource_request(:delete, url, params, + opts) Util.convert_to_stripe_object(resp.data, opts) end when :list define_singleton_method(:"list_#{resource_plural}") \ do |id, params = {}, opts = {}| url = send(resource_url_method, id) - resp, opts = request(:get, url, params, opts) + resp, opts = execute_resource_request(:get, url, params, opts) Util.convert_to_stripe_object(resp.data, opts) end else diff --git a/lib/stripe/api_operations/request.rb b/lib/stripe/api_operations/request.rb index edf4542d5..ec204f365 100644 --- a/lib/stripe/api_operations/request.rb +++ b/lib/stripe/api_operations/request.rb @@ -4,7 +4,8 @@ module Stripe module APIOperations module Request module ClassMethods - def request(method, url, params = {}, opts = {}) + def execute_resource_request(method, url, + params = {}, opts = {}) params ||= {} error_on_invalid_params(params) @@ -36,6 +37,17 @@ def request(method, url, params = {}, opts = {}) [resp, opts_to_persist] end + # This method used to be called `request`, but it's such a short name + # that it eventually conflicted with the name of a field on an API + # resource (specifically, `Event#request`), so it was renamed to + # something more unique. + # + # The former name had been around for just about forever though, and + # although all internal uses have been renamed, I've left this alias in + # place for backwards compatibility. Consider removing it on the next + # major. + alias request execute_resource_request + private def error_on_non_string_user_opts(opts) Util::OPTS_USER_SPECIFIED.each do |opt| next unless opts.key?(opt) @@ -71,10 +83,14 @@ def self.included(base) base.extend(ClassMethods) end - protected def request(method, url, params = {}, opts = {}) + protected def execute_resource_request(method, url, + params = {}, opts = {}) opts = @opts.merge(Util.normalize_opts(opts)) - self.class.request(method, url, params, opts) + self.class.execute_resource_request(method, url, params, opts) end + + # See notes on `alias` above. + alias request execute_resource_request end end end diff --git a/lib/stripe/api_operations/save.rb b/lib/stripe/api_operations/save.rb index 1932949e8..18ba642f9 100644 --- a/lib/stripe/api_operations/save.rb +++ b/lib/stripe/api_operations/save.rb @@ -15,7 +15,8 @@ module ClassMethods # * +opts+ - A Hash of additional options (separate from the params / # object values) to be added to the request. E.g. to allow for an # idempotency_key to be passed in the request headers, or for the - # api_key to be overwritten. See {APIOperations::Request.request}. + # api_key to be overwritten. See + # {APIOperations::Request.execute_resource_request}. def update(id, params = {}, opts = {}) params.each_key do |k| if protected_fields.include?(k) @@ -23,7 +24,8 @@ def update(id, params = {}, opts = {}) end end - resp, opts = request(:post, "#{resource_url}/#{id}", params, opts) + resp, opts = execute_resource_request(:post, "#{resource_url}/#{id}", + params, opts) Util.convert_to_stripe_object(resp.data, opts) end end @@ -43,7 +45,8 @@ def update(id, params = {}, opts = {}) # * +opts+ - A Hash of additional options (separate from the params / # object values) to be added to the request. E.g. to allow for an # idempotency_key to be passed in the request headers, or for the - # api_key to be overwritten. See {APIOperations::Request.request}. + # api_key to be overwritten. See + # {APIOperations::Request.execute_resource_request}. def save(params = {}, opts = {}) # We started unintentionally (sort of) allowing attributes sent to # +save+ to override values used during the update. So as not to break @@ -59,7 +62,7 @@ def save(params = {}, opts = {}) # generated a uri for this object with an identifier baked in values.delete(:id) - resp, opts = request(:post, save_url, values, opts) + resp, opts = execute_resource_request(:post, save_url, values, opts) initialize_from(resp.data, opts) end diff --git a/lib/stripe/api_resource.rb b/lib/stripe/api_resource.rb index 7000537e2..56d3b0f28 100644 --- a/lib/stripe/api_resource.rb +++ b/lib/stripe/api_resource.rb @@ -76,7 +76,7 @@ def self.custom_method(name, http_verb:, http_path: nil) end url = "#{resource_url}/#{CGI.escape(id)}/#{CGI.escape(http_path)}" - resp, opts = request(http_verb, url, params, opts) + resp, opts = execute_resource_request(http_verb, url, params, opts) Util.convert_to_stripe_object(resp.data, opts) end end @@ -93,7 +93,8 @@ def resource_url end def refresh - resp, opts = request(:get, resource_url, @retrieve_params) + resp, opts = execute_resource_request(:get, resource_url, + @retrieve_params) initialize_from(resp.data, opts) end @@ -105,7 +106,7 @@ def self.retrieve(id, opts = {}) end protected def request_stripe_object(method:, path:, params:, opts: {}) - resp, opts = request(method, path, params, opts) + resp, opts = execute_resource_request(method, path, params, opts) # If we're getting back this thing, update; otherwise, instantiate. if Util.object_name_matches_class?(resp.data[:object], self.class) diff --git a/lib/stripe/list_object.rb b/lib/stripe/list_object.rb index 84c015e24..3813a3603 100644 --- a/lib/stripe/list_object.rb +++ b/lib/stripe/list_object.rb @@ -92,8 +92,8 @@ def empty? def retrieve(id, opts = {}) id, retrieve_params = Util.normalize_id(id) - resp, opts = request(:get, "#{resource_url}/#{CGI.escape(id)}", - retrieve_params, opts) + url = "#{resource_url}/#{CGI.escape(id)}" + resp, opts = execute_resource_request(:get, url, retrieve_params, opts) Util.convert_to_stripe_object(resp.data, opts) end diff --git a/lib/stripe/oauth.rb b/lib/stripe/oauth.rb index ffc216d9d..eab8fd12b 100644 --- a/lib/stripe/oauth.rb +++ b/lib/stripe/oauth.rb @@ -5,7 +5,7 @@ module OAuth module OAuthOperations extend APIOperations::Request::ClassMethods - def self.request(method, url, params, opts) + def self.execute_resource_request(method, url, params, opts) opts = Util.normalize_opts(opts) opts[:client] ||= StripeClient.active_client opts[:api_base] ||= Stripe.connect_base @@ -44,7 +44,7 @@ def self.authorize_url(params = {}, opts = {}) def self.token(params = {}, opts = {}) opts = Util.normalize_opts(opts) opts[:api_key] = params[:client_secret] if params[:client_secret] - resp, opts = OAuthOperations.request( + resp, opts = OAuthOperations.execute_resource_request( :post, "/oauth/token", params, opts ) # This is just going to return a generic StripeObject, but that's okay @@ -54,7 +54,7 @@ def self.token(params = {}, opts = {}) def self.deauthorize(params = {}, opts = {}) opts = Util.normalize_opts(opts) params[:client_id] = get_client_id(params) - resp, opts = OAuthOperations.request( + resp, opts = OAuthOperations.execute_resource_request( :post, "/oauth/deauthorize", params, opts ) # This is just going to return a generic StripeObject, but that's okay diff --git a/lib/stripe/resources/account.rb b/lib/stripe/resources/account.rb index 782fe8c86..c4dbb36bc 100644 --- a/lib/stripe/resources/account.rb +++ b/lib/stripe/resources/account.rb @@ -65,7 +65,7 @@ def self.retrieve(id = ARGUMENT_NOT_PROVIDED, opts = {}) end def persons(params = {}, opts = {}) - resp, opts = request(:get, resource_url + "/persons", params, opts) + resp, opts = execute_resource_request(:get, resource_url + "/persons", params, opts) Util.convert_to_stripe_object(resp.data, opts) end diff --git a/lib/stripe/resources/bank_account.rb b/lib/stripe/resources/bank_account.rb index 45231a449..d37f17c49 100644 --- a/lib/stripe/resources/bank_account.rb +++ b/lib/stripe/resources/bank_account.rb @@ -10,7 +10,7 @@ class BankAccount < APIResource OBJECT_NAME = "bank_account" def verify(params = {}, opts = {}) - resp, opts = request(:post, resource_url + "/verify", params, opts) + resp, opts = execute_resource_request(:post, resource_url + "/verify", params, opts) initialize_from(resp.data, opts) end diff --git a/lib/stripe/resources/credit_note.rb b/lib/stripe/resources/credit_note.rb index 7a5d14bfd..5ea64a8a4 100644 --- a/lib/stripe/resources/credit_note.rb +++ b/lib/stripe/resources/credit_note.rb @@ -21,12 +21,12 @@ def void_credit_note(params = {}, opts = {}) end def self.preview(params, opts = {}) - resp, opts = request(:get, resource_url + "/preview", params, opts) + resp, opts = execute_resource_request(:get, resource_url + "/preview", params, opts) Util.convert_to_stripe_object(resp.data, opts) end def self.list_preview_line_items(params, opts = {}) - resp, opts = request(:get, resource_url + "/preview/lines", params, opts) + resp, opts = execute_resource_request(:get, resource_url + "/preview/lines", params, opts) Util.convert_to_stripe_object(resp.data, opts) end end diff --git a/lib/stripe/resources/customer.rb b/lib/stripe/resources/customer.rb index 45d7b2a0b..b864c4e07 100644 --- a/lib/stripe/resources/customer.rb +++ b/lib/stripe/resources/customer.rb @@ -29,7 +29,7 @@ class << self end def delete_discount - resp, opts = request(:delete, resource_url + "/discount") + resp, opts = execute_resource_request(:delete, resource_url + "/discount") initialize_from(resp.data, opts, true) end end diff --git a/lib/stripe/resources/invoice.rb b/lib/stripe/resources/invoice.rb index bd5f061ef..47651253e 100644 --- a/lib/stripe/resources/invoice.rb +++ b/lib/stripe/resources/invoice.rb @@ -62,12 +62,12 @@ def void_invoice(params = {}, opts = {}) end def self.upcoming(params, opts = {}) - resp, opts = request(:get, resource_url + "/upcoming", params, opts) + resp, opts = execute_resource_request(:get, resource_url + "/upcoming", params, opts) Util.convert_to_stripe_object(resp.data, opts) end def self.list_upcoming_line_items(params, opts = {}) - resp, opts = request(:get, resource_url + "/upcoming/lines", params, opts) + resp, opts = execute_resource_request(:get, resource_url + "/upcoming/lines", params, opts) Util.convert_to_stripe_object(resp.data, opts) end end diff --git a/lib/stripe/resources/source.rb b/lib/stripe/resources/source.rb index 06afe79e9..596c69998 100644 --- a/lib/stripe/resources/source.rb +++ b/lib/stripe/resources/source.rb @@ -32,13 +32,13 @@ def detach(params = {}, opts = {}) url = "#{Customer.resource_url}/#{CGI.escape(customer)}/sources" \ "/#{CGI.escape(id)}" - resp, opts = request(:delete, url, params, opts) + resp, opts = execute_resource_request(:delete, url, params, opts) initialize_from(resp.data, opts) end def source_transactions(params = {}, opts = {}) - resp, opts = request(:get, resource_url + "/source_transactions", params, - opts) + resp, opts = execute_resource_request(:get, resource_url + "/source_transactions", params, + opts) Util.convert_to_stripe_object(resp.data, opts) end extend Gem::Deprecate diff --git a/lib/stripe/resources/subscription_item.rb b/lib/stripe/resources/subscription_item.rb index fd169b554..9857dce48 100644 --- a/lib/stripe/resources/subscription_item.rb +++ b/lib/stripe/resources/subscription_item.rb @@ -17,7 +17,7 @@ class SubscriptionItem < APIResource resource_plural: "usage_record_summaries" def usage_record_summaries(params = {}, opts = {}) - resp, opts = request(:get, resource_url + "/usage_record_summaries", params, opts) + resp, opts = execute_resource_request(:get, resource_url + "/usage_record_summaries", params, opts) Util.convert_to_stripe_object(resp.data, opts) end extend Gem::Deprecate