woody-decorators 6.2.0 → 6.3.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
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 9ac54d3d6cbcfdb9a94202fcbfbe074bc206ffd1
|
|
4
|
+
data.tar.gz: a77587ebaa31209d57a426d240e7336c2118c7cd
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 20886ffed87deb11032c3d0204ec9d46e7da8c04e7cf70bd1dfb45d259e6b99668555d78dfe2a07b2a9fa3dadd11ce45b32a52b1ab20bab8afe05f07556c9451
|
|
7
|
+
data.tar.gz: 7cd59578f2296e91bb27ce6fa3fef3762bb031d51cd5f2d9e279b23ad6f1265bb2023662e23d2ae578f645ed9fad22a04ea8d4f5f72f35ff6298bd59080d6153
|
|
@@ -4,6 +4,8 @@ require 'wes/data/api/brief'
|
|
|
4
4
|
require 'woody/decorators/base'
|
|
5
5
|
require 'woody/decorators/brand'
|
|
6
6
|
require 'woody/decorators/brief_question'
|
|
7
|
+
require 'woody/decorators/insights/post'
|
|
8
|
+
require 'woody/decorators/insights/summary'
|
|
7
9
|
|
|
8
10
|
module Woody
|
|
9
11
|
module Decorators
|
|
@@ -82,6 +84,16 @@ module Woody
|
|
|
82
84
|
@model.type == 'public'
|
|
83
85
|
end
|
|
84
86
|
|
|
87
|
+
def insights_posts
|
|
88
|
+
@model.insights('posts').map do |post|
|
|
89
|
+
Insights::Post.new(post)
|
|
90
|
+
end
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
def insights_summary
|
|
94
|
+
Insights::Summary.new(@model.insights('summary'))
|
|
95
|
+
end
|
|
96
|
+
|
|
85
97
|
private
|
|
86
98
|
|
|
87
99
|
DATE_FORMAT = '%Y/%m/%d %H:%M'
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
module Woody
|
|
2
|
+
module Decorators
|
|
3
|
+
module Insights
|
|
4
|
+
module FieldTransformer
|
|
5
|
+
def self.round(precision)
|
|
6
|
+
lambda { |val| val.round(precision) }
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def self.apply_transformers(transformers, value)
|
|
10
|
+
transformers.reduce(value) do |accum, transformer|
|
|
11
|
+
transformer.(accum)
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
require 'woody/decorators/insights/field_transformer'
|
|
2
|
+
require 'json'
|
|
3
|
+
|
|
4
|
+
module Woody
|
|
5
|
+
module Decorators
|
|
6
|
+
module Insights
|
|
7
|
+
class Post
|
|
8
|
+
def initialize(data)
|
|
9
|
+
@data = transform(data)
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def to_json
|
|
13
|
+
JSON.generate(@data)
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
private
|
|
17
|
+
|
|
18
|
+
def field_transformers
|
|
19
|
+
{
|
|
20
|
+
'minutes_viewed' => [FieldTransformer.round(2)],
|
|
21
|
+
'average_duration' => [FieldTransformer.round(2)],
|
|
22
|
+
'video_view_cost' => [FieldTransformer.round(4)],
|
|
23
|
+
'engagement_percent_people_viewed' => [FieldTransformer.round(0)],
|
|
24
|
+
'view_rate' => [FieldTransformer.round(0)],
|
|
25
|
+
'spend' => [FieldTransformer.round(2)],
|
|
26
|
+
'audience_split' => [FieldTransformer.round(0)]
|
|
27
|
+
}
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def transform(data)
|
|
31
|
+
data['data'].each do |key, value|
|
|
32
|
+
if field_transformers.key?(key) && !value.is_a?(Hash)
|
|
33
|
+
data['data'][key] = apply_transformers(key, value)
|
|
34
|
+
next
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
if key == 'audience_split'
|
|
38
|
+
data['data'][key].each do |age_range, split|
|
|
39
|
+
split.each do |gender, percent_value|
|
|
40
|
+
data['data'][key][age_range][gender] = apply_transformers(key, percent_value)
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
@data = data
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
def apply_transformers(key, value)
|
|
49
|
+
FieldTransformer.apply_transformers(
|
|
50
|
+
field_transformers[key],
|
|
51
|
+
value
|
|
52
|
+
)
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
end
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
require 'woody/decorators/insights/field_transformer'
|
|
2
|
+
require 'json'
|
|
3
|
+
|
|
4
|
+
module Woody
|
|
5
|
+
module Decorators
|
|
6
|
+
module Insights
|
|
7
|
+
class Summary
|
|
8
|
+
def initialize(data)
|
|
9
|
+
@data = transform(data)
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def to_json
|
|
13
|
+
JSON.generate(@data)
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def field_transformers
|
|
17
|
+
{
|
|
18
|
+
'total_minutes_viewed' => [FieldTransformer.round(2)],
|
|
19
|
+
'total_engagement_percent_people_viewed' => [FieldTransformer.round(0)],
|
|
20
|
+
'total_view_rate' => [FieldTransformer.round(4)],
|
|
21
|
+
}
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def transform(data)
|
|
25
|
+
data.each do |key, value|
|
|
26
|
+
if field_transformers.key?(key)
|
|
27
|
+
data[key] = apply_transformers(key, value)
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def apply_transformers(key, value)
|
|
33
|
+
FieldTransformer.apply_transformers(
|
|
34
|
+
field_transformers[key],
|
|
35
|
+
value
|
|
36
|
+
)
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
end
|
data/lib/woody/decorators.rb
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: woody-decorators
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 6.
|
|
4
|
+
version: 6.3.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- ''
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2016-08-
|
|
11
|
+
date: 2016-08-19 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: bundler
|
|
@@ -153,6 +153,9 @@ files:
|
|
|
153
153
|
- lib/woody/decorators/collective.rb
|
|
154
154
|
- lib/woody/decorators/creator_user.rb
|
|
155
155
|
- lib/woody/decorators/helper/aspect_ratio.rb
|
|
156
|
+
- lib/woody/decorators/insights/field_transformer.rb
|
|
157
|
+
- lib/woody/decorators/insights/post.rb
|
|
158
|
+
- lib/woody/decorators/insights/summary.rb
|
|
156
159
|
- lib/woody/decorators/submission.rb
|
|
157
160
|
- lib/woody/decorators/user.rb
|
|
158
161
|
- lib/woody/decorators/video.rb
|