Sha256: 75f9b12a2e22adc4660c42f64b916c58c3b74330ad97e089473402d724d762b0

Contents?: true

Size: 1.18 KB

Versions: 4

Compression:

Stored size: 1.18 KB

Contents

module Screenbeacon
  module APIOperations
    module Request
      module ClassMethods
        OPTS_KEYS_TO_PERSIST = Set[:api_id, :api_token, :api_base, :screenbeacon_version]

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

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

          response, opts[:api_id], opts[:api_token] = Screenbeacon.request(method, url, api_id, api_token, params, headers, api_base)

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

4 entries across 4 versions & 1 rubygems

Version Path
screenbeacon-1.0.2 lib/screenbeacon/api_operations/request.rb
screenbeacon-1.0.1 lib/screenbeacon/api_operations/request.rb
screenbeacon-1.0.0 lib/screenbeacon/api_operations/request.rb
screenbeacon-0.1.0 lib/screenbeacon/api_operations/request.rb