patient_zero 0.3.2 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/lib/patient_zero/analytics/facebook.rb +17 -0
- data/lib/patient_zero/source.rb +2 -1
- data/lib/patient_zero/version.rb +1 -1
- data/patient_zero.gemspec +1 -0
- data/spec/patient_zero/analytics/facebook_spec.rb +38 -1
- metadata +16 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f1270910c6c0716586db130a0bb3bc42a135b884
|
4
|
+
data.tar.gz: 651df620375f274d438be4b03e7824ab818a3794
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 52aa5cb238aac7d9262199b4a34f5b1b1227ea8d23ebdfe9384c3fadb68b71777a804b9eea9361d342e4ae5adab2e993b67b95409ff07227d2f46e0052ec0e64
|
7
|
+
data.tar.gz: 39be0fe939bb7e9e1b098c561cc5a01047a6b1608b2eaa2dcc83edc2748a5060645f51d5823bb59a4775e38148b2053737802904f7381547ce1a672128e68076
|
data/.gitignore
CHANGED
@@ -9,6 +9,23 @@ module PatientZero
|
|
9
9
|
page_impressions + message_impressions
|
10
10
|
end
|
11
11
|
|
12
|
+
def impressions_by_city
|
13
|
+
analytical_data.fetch("impressions_by_cities").each_with_object({}) do |city, cities|
|
14
|
+
cities[city['title']] = city['count']
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
def impressions_by_age
|
19
|
+
analytical_data.fetch('impressions_by_ages',[]).first.to_h.fetch('values',{})
|
20
|
+
end
|
21
|
+
|
22
|
+
def impressions_by_gender
|
23
|
+
gender_stats = analytical_data['impressions_by_genders']
|
24
|
+
{ female: gender_stats.fetch('F', 0),
|
25
|
+
male: gender_stats.fetch('M', 0),
|
26
|
+
unknown: gender_stats.fetch('U', 0) }
|
27
|
+
end
|
28
|
+
|
12
29
|
private
|
13
30
|
|
14
31
|
def message_impressions
|
data/lib/patient_zero/source.rb
CHANGED
@@ -32,7 +32,8 @@ module PatientZero
|
|
32
32
|
end
|
33
33
|
|
34
34
|
def analytics start_date: nil, end_date: nil
|
35
|
-
@analytics ||=
|
35
|
+
@analytics ||= {}
|
36
|
+
@analytics["#{start_date}#{end_date}"] ||= Analytics.for_platform platform, token: token, source_id: id, start_date: start_date, end_date: end_date
|
36
37
|
end
|
37
38
|
end
|
38
39
|
end
|
data/lib/patient_zero/version.rb
CHANGED
data/patient_zero.gemspec
CHANGED
@@ -22,6 +22,7 @@ Gem::Specification.new do |spec|
|
|
22
22
|
spec.add_development_dependency 'rake', '~> 10.0'
|
23
23
|
spec.add_development_dependency 'rspec'
|
24
24
|
spec.add_development_dependency 'pry'
|
25
|
+
spec.add_development_dependency 'dotenv'
|
25
26
|
|
26
27
|
spec.add_dependency 'faraday'
|
27
28
|
spec.add_dependency 'json'
|
@@ -19,11 +19,48 @@ module PatientZero
|
|
19
19
|
'values'=>
|
20
20
|
{ '2010-10-10'=> 99 } } ]
|
21
21
|
end
|
22
|
+
let(:age_data) { {"13-17"=>14_000, "18-24"=>240_000, "25-34"=>650_000, "35-44"=>660_000, "45-54"=>380_000, "55-64"=>170_000, "65+"=>93_000} }
|
23
|
+
let(:impressions_by_city) { [{"title"=>"Atlanta, GA", "count"=>16_000}, {"title"=>"Los Angeles, CA", "count"=>15_000}, {"title"=>"San Diego, CA", "count"=>14_000}] }
|
24
|
+
let(:impressions_by_age) { [{"key"=>"Users", "values"=>age_data}] }
|
25
|
+
let(:impressions_by_gender) { {"F"=>100_000, "M"=>70_000, "U"=>10_000} }
|
22
26
|
let(:token) { 'token-shmoken' }
|
23
|
-
let(:analytical_data)
|
27
|
+
let(:analytical_data) do
|
28
|
+
{ 'messages' => messages,
|
29
|
+
'page_impressions' => page_impressions,
|
30
|
+
'impressions_by_cities' => impressions_by_city,
|
31
|
+
'impressions_by_ages' => impressions_by_age,
|
32
|
+
'impressions_by_genders' => impressions_by_gender }
|
33
|
+
end
|
24
34
|
let(:facebook_analytics) { Facebook.new token: token, source_id: source_id }
|
25
35
|
before{ allow(facebook_analytics).to receive(:analytical_data).and_return analytical_data }
|
26
36
|
|
37
|
+
describe '#impressions_by_city' do
|
38
|
+
it 'returns the impressions by city' do
|
39
|
+
expected_result = {
|
40
|
+
"Atlanta, GA"=>16_000,
|
41
|
+
"Los Angeles, CA"=>15_000,
|
42
|
+
"San Diego, CA"=>14_000 }
|
43
|
+
expect(facebook_analytics.impressions_by_city).to eq expected_result
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
describe '#impressions_by_age' do
|
48
|
+
it 'returns the impressions by age' do
|
49
|
+
expect(facebook_analytics.impressions_by_age).to eq age_data
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
describe '#impressions_by_gender' do
|
54
|
+
it 'returns the impressions_by_gender' do
|
55
|
+
expected_result = {
|
56
|
+
female: impressions_by_gender['F'],
|
57
|
+
male: impressions_by_gender['M'],
|
58
|
+
unknown: impressions_by_gender['U']
|
59
|
+
}
|
60
|
+
expect(facebook_analytics.impressions_by_gender).to eq expected_result
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
27
64
|
describe '#impressions' do
|
28
65
|
it 'returns the total for message and page impressions' do
|
29
66
|
expect(facebook_analytics.impressions).to eq 444
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: patient_zero
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Adam Zaninovich
|
@@ -67,6 +67,20 @@ dependencies:
|
|
67
67
|
- - ">="
|
68
68
|
- !ruby/object:Gem::Version
|
69
69
|
version: '0'
|
70
|
+
- !ruby/object:Gem::Dependency
|
71
|
+
name: dotenv
|
72
|
+
requirement: !ruby/object:Gem::Requirement
|
73
|
+
requirements:
|
74
|
+
- - ">="
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: '0'
|
77
|
+
type: :development
|
78
|
+
prerelease: false
|
79
|
+
version_requirements: !ruby/object:Gem::Requirement
|
80
|
+
requirements:
|
81
|
+
- - ">="
|
82
|
+
- !ruby/object:Gem::Version
|
83
|
+
version: '0'
|
70
84
|
- !ruby/object:Gem::Dependency
|
71
85
|
name: faraday
|
72
86
|
requirement: !ruby/object:Gem::Requirement
|
@@ -184,3 +198,4 @@ test_files:
|
|
184
198
|
- spec/patient_zero/profile_spec.rb
|
185
199
|
- spec/patient_zero/source_spec.rb
|
186
200
|
- spec/spec_helper.rb
|
201
|
+
has_rdoc:
|