woody-decorators 6.2.0 → 6.3.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 134557377d2da3095606ce7a110e6213b59b70a6
4
- data.tar.gz: ec5c9c6694605bc0bae40e8c8e3cefc8b99f5362
3
+ metadata.gz: 9ac54d3d6cbcfdb9a94202fcbfbe074bc206ffd1
4
+ data.tar.gz: a77587ebaa31209d57a426d240e7336c2118c7cd
5
5
  SHA512:
6
- metadata.gz: 49fa725bed368caf376961d28676d734b804042479e215a1bd1cab3ca7b3d611065420f96f5cd5b8a56eafa3e6f96b0a47abde5ada2e7ef1e479097bc7dd9fc2
7
- data.tar.gz: 7ad7cd36920dad512e8cf118d838cd15636bd43497a5ef645029a4216405d38dd1c031804d793bd0913011a37cac35f85216b931b99dbe112ed38f4fc6b515e0
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
@@ -1,5 +1,5 @@
1
1
  module Woody
2
2
  module Decorators
3
- VERSION = '6.2.0'.freeze
3
+ VERSION = '6.3.0'.freeze
4
4
  end
5
5
  end
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.2.0
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-10 00:00:00.000000000 Z
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