Sha256: 55d9cbabf1eccf31345a1fd9b7fff2793fb0b76e919a224b4e0fe38bb571796d

Contents?: true

Size: 860 Bytes

Versions: 4

Compression:

Stored size: 860 Bytes

Contents

module NCore
  module All
    extend ActiveSupport::Concern

    module ClassMethods
      def all(params={}, api_creds=nil)
        parsed, creds = request(:get, url, api_creds, params)
        if parsed[:errors].any?
          raise parent::QueryError, parsed[:errors]
        end
        Collection.new.tap do |coll|
          coll.metadata = parsed[:metadata]
          parsed[:data].each do |hash|
            if key = hash[:object]
              coll << discover_class(key, self).new(hash.merge(metadata: parsed[:metadata]), creds)
            else
              coll << new(hash.merge(metadata: parsed[:metadata]), creds)
            end
          end
        end
      end

      def first(params={}, api_creds=nil)
        params = params.with_indifferent_access.merge(max_results: 1)
        all(params, api_creds).first
      end
    end

  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
ncore-1.2.1 lib/ncore/methods/all.rb
ncore-1.2.0 lib/ncore/methods/all.rb
ncore-1.1.0 lib/ncore/methods/all.rb
ncore-1.0.0 lib/ncore/methods/all.rb