Class: IntercomSummary::CLI

Inherits:
Object
  • Object
show all
Defined in:
lib/intercom_summary.rb

Class Method Summary collapse

Class Method Details

.filter_by_created_at(list, days) ⇒ Object



43
44
45
# File 'lib/intercom_summary.rb', line 43

def self.filter_by_created_at(list, days)
  list.select { |e| is_date_before_days(e.created_at, days) }
end

.filter_by_last_request_at(list, days) ⇒ Object



35
36
37
# File 'lib/intercom_summary.rb', line 35

def self.filter_by_last_request_at(list, days)
  list.select { |e| is_date_before_days(e.last_request_at, days) }
end

.filter_by_signed_up_at(list, days) ⇒ Object



39
40
41
# File 'lib/intercom_summary.rb', line 39

def self.filter_by_signed_up_at(list, days)
  list.select { |e| is_date_before_days(e.signed_up_at, days) }
end

.is_date_before_days(date, days) ⇒ Object



47
48
49
50
# File 'lib/intercom_summary.rb', line 47

def self.is_date_before_days(date, days)
  seconds_of_day = (60 * 60 * 24).freeze
  date && date.to_i < Time.now.to_i && date.to_i + seconds_of_day * days > Time.now.to_i
end

.startObject



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/intercom_summary.rb', line 7

def self.start
  intercom = Intercom::Client.new(app_id: ENV['INTERCOM_APP_ID'], api_key: ENV['INTERCOM_APP_KEY'])

  # User summaries
  users = []
  intercom.users.scroll.each { |user| users.push user }

  puts "Monthly active users\t\t#{filter_by_last_request_at(users, 30).size}"
  puts "Weekly active users\t\t#{filter_by_last_request_at(users, 7).size}"
  puts "Daily active users\t\t#{filter_by_last_request_at(users, 1).size}"

  puts "Monthly signed up users\t\t#{filter_by_signed_up_at(users, 30).size}"
  puts "Weekly signed up users\t\t#{filter_by_signed_up_at(users, 7).size}"
  puts "Daily signed up users\t\t#{filter_by_signed_up_at(users, 1).size}"

  # Company summaries
  companies = []
  intercom.companies.scroll.each { |company| companies.push company }

  puts "Monthly active companies\t#{filter_by_last_request_at(companies, 30).size}"
  puts "Weekly active companies\t\t#{filter_by_last_request_at(companies, 7).size}"
  puts "Daily active companies\t\t#{filter_by_last_request_at(companies, 1).size}"

  puts "Monthly signed up companies\t#{filter_by_created_at(companies, 30).size}"
  puts "Weekly signed up companies\t#{filter_by_created_at(companies, 7).size}"
  puts "Daily signed up companies\t#{filter_by_created_at(companies, 1).size}"
end