module Stripe::APIOperations::Request::ClassMethods

Public Instance Methods

execute_resource_request(method, url, params = {}, opts = {}) click to toggle source
# File lib/stripe/api_operations/request.rb, line 7
def execute_resource_request(method, url,
                             params = {}, opts = {})
  execute_resource_request_internal(
    :execute_request, method, url, params, opts
  )
end
Also aliased as: request
execute_resource_request_stream(method, url, params = {}, opts = {}, &read_body_chunk_block) click to toggle source
# File lib/stripe/api_operations/request.rb, line 14
def execute_resource_request_stream(method, url,
                                    params = {}, opts = {},
                                    &read_body_chunk_block)
  execute_resource_request_internal(
    :execute_request_stream,
    method,
    url,
    params,
    opts,
    &read_body_chunk_block
  )
end
request(method, url, params = {}, opts = {})

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.

Private Instance Methods

error_on_invalid_params(params) click to toggle source
# File lib/stripe/api_operations/request.rb, line 89
        def error_on_invalid_params(params)
  return if params.nil? || params.is_a?(Hash)

  raise ArgumentError,
        "request params should be either a Hash or nil " \
          "(was a #{params.class})"
end
error_on_non_string_user_opts(opts) click to toggle source
# File lib/stripe/api_operations/request.rb, line 75
        def error_on_non_string_user_opts(opts)
  Util::OPTS_USER_SPECIFIED.each do |opt|
    next unless opts.key?(opt)

    val = opts[opt]
    next if val.nil?
    next if val.is_a?(String)

    raise ArgumentError,
          "request option '#{opt}' should be a string value " \
            "(was a #{val.class})"
  end
end
execute_resource_request_internal(client_request_method_sym, method, url, params, opts, &read_body_chunk_block) click to toggle source
# File lib/stripe/api_operations/request.rb, line 27
        def execute_resource_request_internal(client_request_method_sym,
                                              method, url,
                                              params, opts,
                                              &read_body_chunk_block)
  params ||= {}

  error_on_invalid_params(params)
  warn_on_opts_in_params(params)

  opts = Util.normalize_opts(opts)
  error_on_non_string_user_opts(opts)

  opts[:client] ||= StripeClient.active_client

  headers = opts.clone
  api_key = headers.delete(:api_key)
  api_base = headers.delete(:api_base)
  client = headers.delete(:client)
  # Assume all remaining opts must be headers

  resp, opts[:api_key] = client.send(
    client_request_method_sym,
    method, url,
    api_base: api_base, api_key: api_key,
    headers: headers, params: params,
    &read_body_chunk_block
  )

  # Hash#select returns an array before 1.9
  opts_to_persist = {}
  opts.each do |k, v|
    opts_to_persist[k] = v if Util::OPTS_PERSISTABLE.include?(k)
  end

  [resp, opts_to_persist]
end
warn_on_opts_in_params(params) click to toggle source
# File lib/stripe/api_operations/request.rb, line 97
        def warn_on_opts_in_params(params)
  Util::OPTS_USER_SPECIFIED.each do |opt|
    if params.key?(opt)
      warn("WARNING: '#{opt}' should be in opts instead of params.")
    end
  end
end