lib/intercom/user_collection_proxy.rb in intercom-0.1.2 vs lib/intercom/user_collection_proxy.rb in intercom-0.1.4
- old
+ new
@@ -6,25 +6,16 @@
# 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|
+ # Intercom::User.all.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("/v1/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
@@ -36,16 +27,17 @@
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
+ include Enumerable
- alias :collect :map
+ # 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