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