Sha256: a420b495e90a1fcbbc60640d7d5ae709aa608eb210728790c48ee571c3821880

Contents?: true

Size: 1.07 KB

Versions: 13

Compression:

Stored size: 1.07 KB

Contents

module Payjp
  module APIOperations
    module Request
      module ClassMethods
        OPTS_KEYS_TO_PERSIST = Set[:api_key, :api_base, :payjp_account, :payjp_version]

        def request(method, url, params = {}, opts = {})
          opts = Util.normalize_opts(opts)

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

          response, opts[:api_key] = Payjp.request(method, url, api_key, params, headers, api_base)

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

          [response, opts_to_persist]
        end
      end

      def self.included(base)
        base.extend(ClassMethods)
      end

      protected

      def request(method, url, params = {}, opts = {})
        opts = @opts.merge(Util.normalize_opts(opts))
        self.class.request(method, url, params, opts)
      end
    end
  end
end

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
payjp-0.0.16 lib/payjp/api_operations/request.rb
payjp-0.0.14 lib/payjp/api_operations/request.rb
payjp-0.0.13 lib/payjp/api_operations/request.rb
payjp-0.0.12 lib/payjp/api_operations/request.rb
payjp-0.0.10 lib/payjp/api_operations/request.rb
payjp-0.0.9 lib/payjp/api_operations/request.rb
payjp-0.0.8 lib/payjp/api_operations/request.rb
payjp-0.0.7 lib/payjp/api_operations/request.rb
payjp-0.0.6 lib/payjp/api_operations/request.rb
payjp-0.0.5 lib/payjp/api_operations/request.rb
payjp-0.0.4 lib/payjp/api_operations/request.rb
payjp-0.0.3 lib/payjp/api_operations/request.rb
payjp-0.0.2 lib/payjp/api_operations/request.rb