Sha256: 749e8d22c432f418bf96d106d5d0c70793de6b1c929ed4dc5ff469a055b5fd64

Contents?: true

Size: 1.13 KB

Versions: 4

Compression:

Stored size: 1.13 KB

Contents

require 'intercom/user_resource'
require 'intercom/flat_store'
require 'intercom/social_profile'

module Intercom
  # A collection of your Users from Intercom
  # Uses the paginated users api under the covers (http://docs.intercom.io/api#getting_all_users)
  #
  # == Examples:
  #
  # Iterating over each user
  #    Intercom::User.all.each do |user|
  #      puts user.inspect
  #    end
  #
  class UserCollectionProxy
    # yields each {User} to the block provided
    # @return [void]
    def each(&block)
      page = 1
      fetch_another_page = true
      while fetch_another_page
        current_page = Intercom.get("/v1/users", {:page => page})
        current_page["users"].each do |user|
          block.call User.from_api(user)
        end
        page = page + 1
        fetch_another_page = !current_page["next_page"].nil?
      end
    end

    include Enumerable

    # This method exists as an optimisation of Enumerable#count,
    # which would potentially fetch multiple pages of users.
    def count(item=nil) #:nodoc:
      return super unless item.nil?
      return super if block_given?

      Intercom::User.count
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
intercom-0.1.7 lib/intercom/user_collection_proxy.rb
intercom-0.1.6 lib/intercom/user_collection_proxy.rb
intercom-0.1.5 lib/intercom/user_collection_proxy.rb
intercom-0.1.4 lib/intercom/user_collection_proxy.rb