class Stripe::StripeClient

def self.default_conn

connection and wrapping it in a StripeClient object should be preferred.
object should never be mutated, and instead instantiating your own
A default Faraday connection to be used when one isn't configured. This
def self.default_conn
  # We're going to keep connections around so that we can take advantage
  # of connection re-use, so make sure that we have a separate connection
  # object per thread.
  Thread.current[:stripe_client_default_conn] ||= begin
    conn = Faraday.new do |builder|
      builder.use Faraday::Request::Multipart
      builder.use Faraday::Request::UrlEncoded
      builder.use Faraday::Response::RaiseError
      # Net::HTTP::Persistent doesn't seem to do well on Windows or JRuby,
      # so fall back to default there.
      if Gem.win_platform? || RUBY_PLATFORM == "java"
        builder.adapter :net_http
      else
        builder.adapter :net_http_persistent
      end
    end
    conn.proxy = Stripe.proxy if Stripe.proxy
    if Stripe.verify_ssl_certs
      conn.ssl.verify = true
      conn.ssl.cert_store = Stripe.ca_store
    else
      conn.ssl.verify = false
      unless @verify_ssl_warned
        @verify_ssl_warned = true
        warn("WARNING: Running without SSL cert verification. " \
          "You should never do this in production. " \
          "Execute `Stripe.verify_ssl_certs = true` to enable " \
          "verification.")
      end
    end
    conn
  end
end