Sha256: 534c6a3ac56769c447be6e7fc483ffd909f66f2745a1788fb262a36f86d60abd

Contents?: true

Size: 1.35 KB

Versions: 7

Compression:

Stored size: 1.35 KB

Contents

require 'intercom/user_resource'
require 'intercom/user_custom_data'
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:
  #
  # Fetching a count of all Users tracked on Intercom
  #    Intercom::User.all.count
  #
  # Iterating over each user
  #    Intercom::User.each do |user|
  #      puts user.inspect
  #    end
  #
  class UserCollectionProxy
    # @return [Integer] number of users tracked on Intercom for this application
    def count
      response = Intercom.get("users", {:per_page => 1})
      response["total_count"]
    end

    # 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("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

    # yields each {User} to the block provided and collects the output in the same way as Enumerable#map
    # @return [Array<Object>]
    def map
      out = []
      each { |e| out << yield(e) }
      out
    end

    alias :collect :map
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
intercom-0.0.11 lib/intercom/user_collection_proxy.rb
intercom-0.0.10 lib/intercom/user_collection_proxy.rb
intercom-0.0.9 lib/intercom/user_collection_proxy.rb
intercom-0.0.8 lib/intercom/user_collection_proxy.rb
intercom-0.0.7 lib/intercom/user_collection_proxy.rb
intercom-0.0.6 lib/intercom/user_collection_proxy.rb
intercom-0.0.5 lib/intercom/user_collection_proxy.rb