mirror of
https://github.com/stripe/stripe-ruby.git
synced 2025-08-10 00:01:09 -04:00
Alphabetize methods in lib/stripe.rb
This one is unfortunately a lot of churn, but it's incredibly frustrating how difficult it is to find methods in this file. Here we alphabetize the methods, but do nothing else. Alphabetization only occurs within visibility blocks, so visibility is not affected at all.
This commit is contained in:
parent
fb555a764e
commit
83201e1a48
280
lib/stripe.rb
280
lib/stripe.rb
@ -128,6 +128,37 @@ module Stripe
|
||||
(api_base_url || @api_base) + url
|
||||
end
|
||||
|
||||
# The location of a file containing a bundle of CA certificates. By default
|
||||
# the library will use an included bundle that can successfully validate
|
||||
# Stripe certificates.
|
||||
def self.ca_bundle_path
|
||||
@ca_bundle_path
|
||||
end
|
||||
|
||||
def self.ca_bundle_path=(path)
|
||||
@ca_bundle_path = path
|
||||
|
||||
# empty this field so a new store is initialized
|
||||
@ca_store = nil
|
||||
end
|
||||
|
||||
# A certificate store initialized from the the bundle in #ca_bundle_path and
|
||||
# which is used to validate TLS on every request.
|
||||
#
|
||||
# This was added to the give the gem "pseudo thread safety" in that it seems
|
||||
# when initiating many parallel requests marshaling the certificate store is
|
||||
# the most likely point of failure (see issue #382). Any program attempting
|
||||
# to leverage this pseudo safety should make a call to this method (i.e.
|
||||
# `Stripe.ca_store`) in their initialization code because it marshals lazily
|
||||
# and is itself not thread safe.
|
||||
def self.ca_store
|
||||
@ca_store ||= begin
|
||||
store = OpenSSL::X509::Store.new
|
||||
store.add_file(ca_bundle_path)
|
||||
store
|
||||
end
|
||||
end
|
||||
|
||||
def self.request(method, url, api_key, params={}, headers={}, api_base_url=nil)
|
||||
api_base_url = api_base_url || @api_base
|
||||
|
||||
@ -184,37 +215,6 @@ module Stripe
|
||||
[parse(response), api_key]
|
||||
end
|
||||
|
||||
# The location of a file containing a bundle of CA certificates. By default
|
||||
# the library will use an included bundle that can successfully validate
|
||||
# Stripe certificates.
|
||||
def self.ca_bundle_path
|
||||
@ca_bundle_path
|
||||
end
|
||||
|
||||
def self.ca_bundle_path=(path)
|
||||
@ca_bundle_path = path
|
||||
|
||||
# empty this field so a new store is initialized
|
||||
@ca_store = nil
|
||||
end
|
||||
|
||||
# A certificate store initialized from the the bundle in #ca_bundle_path and
|
||||
# which is used to validate TLS on every request.
|
||||
#
|
||||
# This was added to the give the gem "pseudo thread safety" in that it seems
|
||||
# when initiating many parallel requests marshaling the certificate store is
|
||||
# the most likely point of failure (see issue #382). Any program attempting
|
||||
# to leverage this pseudo safety should make a call to this method (i.e.
|
||||
# `Stripe.ca_store`) in their initialization code because it marshals lazily
|
||||
# and is itself not thread safe.
|
||||
def self.ca_store
|
||||
@ca_store ||= begin
|
||||
store = OpenSSL::X509::Store.new
|
||||
store.add_file(ca_bundle_path)
|
||||
store
|
||||
end
|
||||
end
|
||||
|
||||
def self.max_network_retries
|
||||
@max_network_retries
|
||||
end
|
||||
@ -225,6 +225,36 @@ module Stripe
|
||||
|
||||
private
|
||||
|
||||
def self._uname_uname
|
||||
(`uname -a 2>/dev/null` || '').strip
|
||||
rescue Errno::ENOMEM # couldn't create subprocess
|
||||
"uname lookup failed"
|
||||
end
|
||||
|
||||
def self._uname_ver
|
||||
(`ver` || '').strip
|
||||
rescue Errno::ENOMEM # couldn't create subprocess
|
||||
"uname lookup failed"
|
||||
end
|
||||
|
||||
def self.api_error(error, resp, error_obj)
|
||||
APIError.new(error[:message], resp.code, resp.body, error_obj, resp.headers)
|
||||
end
|
||||
|
||||
def self.authentication_error(error, resp, error_obj)
|
||||
AuthenticationError.new(error[:message], resp.code, resp.body, error_obj,
|
||||
resp.headers)
|
||||
end
|
||||
|
||||
def self.card_error(error, resp, error_obj)
|
||||
CardError.new(error[:message], error[:param], error[:code],
|
||||
resp.code, resp.body, error_obj, resp.headers)
|
||||
end
|
||||
|
||||
def self.execute_request(opts)
|
||||
RestClient::Request.execute(opts)
|
||||
end
|
||||
|
||||
def self.execute_request_with_rescues(request_opts, api_base_url, retry_count = 0)
|
||||
begin
|
||||
response = execute_request(request_opts)
|
||||
@ -263,21 +293,9 @@ module Stripe
|
||||
response
|
||||
end
|
||||
|
||||
def self.user_agent
|
||||
@uname ||= get_uname
|
||||
lang_version = "#{RUBY_VERSION} p#{RUBY_PATCHLEVEL} (#{RUBY_RELEASE_DATE})"
|
||||
|
||||
{
|
||||
:bindings_version => Stripe::VERSION,
|
||||
:lang => 'ruby',
|
||||
:lang_version => lang_version,
|
||||
:platform => RUBY_PLATFORM,
|
||||
:engine => defined?(RUBY_ENGINE) ? RUBY_ENGINE : '',
|
||||
:publisher => 'stripe',
|
||||
:uname => @uname,
|
||||
:hostname => Socket.gethostname,
|
||||
}
|
||||
|
||||
def self.general_api_error(rcode, rbody)
|
||||
APIError.new("Invalid response object from API: #{rbody.inspect} " +
|
||||
"(HTTP response code was #{rcode})", rcode, rbody)
|
||||
end
|
||||
|
||||
def self.get_uname
|
||||
@ -295,72 +313,6 @@ module Stripe
|
||||
end
|
||||
end
|
||||
|
||||
def self._uname_uname
|
||||
(`uname -a 2>/dev/null` || '').strip
|
||||
rescue Errno::ENOMEM # couldn't create subprocess
|
||||
"uname lookup failed"
|
||||
end
|
||||
|
||||
def self._uname_ver
|
||||
(`ver` || '').strip
|
||||
rescue Errno::ENOMEM # couldn't create subprocess
|
||||
"uname lookup failed"
|
||||
end
|
||||
|
||||
# DEPRECATED. Use `Util#encode_parameters` instead.
|
||||
def self.uri_encode(params)
|
||||
Util.encode_parameters(params)
|
||||
end
|
||||
class << self
|
||||
extend Gem::Deprecate
|
||||
deprecate :uri_encode, "Stripe::Util#encode_parameters", 2016, 01
|
||||
end
|
||||
|
||||
def self.request_headers(api_key, method)
|
||||
headers = {
|
||||
'User-Agent' => "Stripe/v1 RubyBindings/#{Stripe::VERSION}",
|
||||
'Authorization' => "Bearer #{api_key}",
|
||||
'Content-Type' => 'application/x-www-form-urlencoded'
|
||||
}
|
||||
|
||||
# It is only safe to retry network failures on post and delete
|
||||
# requests if we add an Idempotency-Key header
|
||||
if [:post, :delete].include?(method) && self.max_network_retries > 0
|
||||
headers['Idempotency-Key'] ||= SecureRandom.uuid
|
||||
end
|
||||
|
||||
headers['Stripe-Version'] = api_version if api_version
|
||||
headers['Stripe-Account'] = stripe_account if stripe_account
|
||||
|
||||
begin
|
||||
headers.update('X-Stripe-Client-User-Agent' => JSON.generate(user_agent))
|
||||
rescue => e
|
||||
headers.update('X-Stripe-Client-Raw-User-Agent' => user_agent.inspect,
|
||||
:error => "#{e} (#{e.class})")
|
||||
end
|
||||
end
|
||||
|
||||
def self.execute_request(opts)
|
||||
RestClient::Request.execute(opts)
|
||||
end
|
||||
|
||||
def self.parse(response)
|
||||
begin
|
||||
# Would use :symbolize_names => true, but apparently there is
|
||||
# some library out there that makes symbolize_names not work.
|
||||
response = JSON.parse(response.body)
|
||||
rescue JSON::ParserError
|
||||
raise general_api_error(response.code, response.body)
|
||||
end
|
||||
|
||||
Util.symbolize_names(response)
|
||||
end
|
||||
|
||||
def self.general_api_error(rcode, rbody)
|
||||
APIError.new("Invalid response object from API: #{rbody.inspect} " +
|
||||
"(HTTP response code was #{rcode})", rcode, rbody)
|
||||
end
|
||||
|
||||
def self.handle_api_error(resp)
|
||||
begin
|
||||
error_obj = JSON.parse(resp.body)
|
||||
@ -389,34 +341,6 @@ module Stripe
|
||||
|
||||
end
|
||||
|
||||
def self.invalid_request_error(error, resp, error_obj)
|
||||
InvalidRequestError.new(error[:message], error[:param], resp.code,
|
||||
resp.body, error_obj, resp.headers)
|
||||
end
|
||||
|
||||
def self.authentication_error(error, resp, error_obj)
|
||||
AuthenticationError.new(error[:message], resp.code, resp.body, error_obj,
|
||||
resp.headers)
|
||||
end
|
||||
|
||||
def self.rate_limit_error(error, resp, error_obj)
|
||||
RateLimitError.new(error[:message], resp.code, resp.body, error_obj,
|
||||
resp.headers)
|
||||
end
|
||||
|
||||
def self.card_error(error, resp, error_obj)
|
||||
CardError.new(error[:message], error[:param], error[:code],
|
||||
resp.code, resp.body, error_obj, resp.headers)
|
||||
end
|
||||
|
||||
def self.permission_error(error, resp, error_obj)
|
||||
PermissionError.new(error[:message], resp.code, resp.body, error_obj, resp.headers)
|
||||
end
|
||||
|
||||
def self.api_error(error, resp, error_obj)
|
||||
APIError.new(error[:message], resp.code, resp.body, error_obj, resp.headers)
|
||||
end
|
||||
|
||||
def self.handle_restclient_error(e, request_opts, retry_count, api_base_url=nil)
|
||||
|
||||
api_base_url = @api_base unless api_base_url
|
||||
@ -462,6 +386,56 @@ module Stripe
|
||||
raise APIConnectionError.new(message + "\n\n(Network error: #{e.message})")
|
||||
end
|
||||
|
||||
def self.invalid_request_error(error, resp, error_obj)
|
||||
InvalidRequestError.new(error[:message], error[:param], resp.code,
|
||||
resp.body, error_obj, resp.headers)
|
||||
end
|
||||
|
||||
def self.parse(response)
|
||||
begin
|
||||
# Would use :symbolize_names => true, but apparently there is
|
||||
# some library out there that makes symbolize_names not work.
|
||||
response = JSON.parse(response.body)
|
||||
rescue JSON::ParserError
|
||||
raise general_api_error(response.code, response.body)
|
||||
end
|
||||
|
||||
Util.symbolize_names(response)
|
||||
end
|
||||
|
||||
def self.permission_error(error, resp, error_obj)
|
||||
PermissionError.new(error[:message], resp.code, resp.body, error_obj, resp.headers)
|
||||
end
|
||||
|
||||
def self.rate_limit_error(error, resp, error_obj)
|
||||
RateLimitError.new(error[:message], resp.code, resp.body, error_obj,
|
||||
resp.headers)
|
||||
end
|
||||
|
||||
def self.request_headers(api_key, method)
|
||||
headers = {
|
||||
'User-Agent' => "Stripe/v1 RubyBindings/#{Stripe::VERSION}",
|
||||
'Authorization' => "Bearer #{api_key}",
|
||||
'Content-Type' => 'application/x-www-form-urlencoded'
|
||||
}
|
||||
|
||||
# It is only safe to retry network failures on post and delete
|
||||
# requests if we add an Idempotency-Key header
|
||||
if [:post, :delete].include?(method) && self.max_network_retries > 0
|
||||
headers['Idempotency-Key'] ||= SecureRandom.uuid
|
||||
end
|
||||
|
||||
headers['Stripe-Version'] = api_version if api_version
|
||||
headers['Stripe-Account'] = stripe_account if stripe_account
|
||||
|
||||
begin
|
||||
headers.update('X-Stripe-Client-User-Agent' => JSON.generate(user_agent))
|
||||
rescue => e
|
||||
headers.update('X-Stripe-Client-Raw-User-Agent' => user_agent.inspect,
|
||||
:error => "#{e} (#{e.class})")
|
||||
end
|
||||
end
|
||||
|
||||
def self.should_retry?(e, retry_count)
|
||||
retry_count < self.max_network_retries &&
|
||||
RETRY_EXCEPTIONS.any? { |klass| e.is_a?(klass) }
|
||||
@ -482,4 +456,30 @@ module Stripe
|
||||
|
||||
sleep_seconds
|
||||
end
|
||||
|
||||
# DEPRECATED. Use `Util#encode_parameters` instead.
|
||||
def self.uri_encode(params)
|
||||
Util.encode_parameters(params)
|
||||
end
|
||||
class << self
|
||||
extend Gem::Deprecate
|
||||
deprecate :uri_encode, "Stripe::Util#encode_parameters", 2016, 01
|
||||
end
|
||||
|
||||
def self.user_agent
|
||||
@uname ||= get_uname
|
||||
lang_version = "#{RUBY_VERSION} p#{RUBY_PATCHLEVEL} (#{RUBY_RELEASE_DATE})"
|
||||
|
||||
{
|
||||
:bindings_version => Stripe::VERSION,
|
||||
:lang => 'ruby',
|
||||
:lang_version => lang_version,
|
||||
:platform => RUBY_PLATFORM,
|
||||
:engine => defined?(RUBY_ENGINE) ? RUBY_ENGINE : '',
|
||||
:publisher => 'stripe',
|
||||
:uname => @uname,
|
||||
:hostname => Socket.gethostname,
|
||||
}
|
||||
|
||||
end
|
||||
end
|
||||
|
Loading…
x
Reference in New Issue
Block a user