Class: FirebaseStats::Wrapper

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

Overview

Transforms the parsed Firebase file into something more user friendly

Instance Method Summary collapse

Constructor Details

#initialize(stats) ⇒ Wrapper



11
12
13
14
# File 'lib/wrapper.rb', line 11

def initialize(stats)
  super()
  @stats = stats
end

Instance Method Details

#devices(friendly: false, limit: 10, platform: :all) ⇒ Object

Gets all devices



37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
# File 'lib/wrapper.rb', line 37

def devices(friendly: false, limit: 10, platform: :all)
  filtered = DeviceUtils.filter_device(@stats.data[:devices], platform)
  filtered = filtered.take(limit || 10)
  cleaned = []
  filtered.each do |row|
    device = {
      'model' => row['Device model']
    }
    if friendly && ((platform == :all) || (platform == :android))
      mapped = Android::Devices.search_by_model(row['Device model'])
      device['friendly'] = if mapped.nil?
                             row['Device model']
                           else
                             mapped.name
                           end
    end
    device['count'] = row['Users'].to_i

    cleaned << device
  end
  cleaned
end

#genderObject



60
61
62
63
64
65
66
67
68
69
70
# File 'lib/wrapper.rb', line 60

def gender
  raw = @stats.data[:gender]
  data = []
  raw.each do |row|
    data << {
      'gender' => row['Gender'],
      'count' => row['Users']
    }
  end
  data
end

#gender_ageObject



72
73
74
75
76
77
78
79
80
81
82
83
# File 'lib/wrapper.rb', line 72

def gender_age
  raw = @stats.data[:gender_age]
  data = []
  raw.each do |row|
    data << {
      'age' => row['Category'],
      'male' => (row['Male'].to_f * 100).round(2),
      'female' => (row['Female'].to_f * 100).round(2)
    }
  end
  data
end

#os(platform: :all, grouped: true, major_order: true) ⇒ Object

Get all OS versions, grouped by Major version



20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/wrapper.rb', line 20

def os(platform: :all, grouped: true, major_order: true)
  os_data = all_os
  filtered = filter_os(os_data, platform)

  data = if grouped
           make_group_stats(filtered, platform)
         else
           filtered
         end

  major_order ? major_version_sort(data) : data
end