hisui 0.1.5 → 0.1.6
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/README.md +12 -10
- data/lib/hisui.rb +1 -0
- data/lib/hisui/model.rb +2 -2
- data/lib/hisui/response.rb +7 -110
- data/lib/hisui/response/ga_data.rb +105 -0
- data/lib/hisui/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 539f07615132804cd99b435af49bfb73380983d58b967a16d9326dde055ca47c
|
4
|
+
data.tar.gz: 7cb0f27599b5e2fa28fd947ea0db9aacaa9f669bf6d6b301baba108d7bd892c2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: dbdf33eeb8906f14d19c7eb14fa3e90f3be7819beca4a9d408d468e4059aa92c1784cf6926dc61f1bfc8e6bdd32518d1b1b735d7fe732397f58b67cb258ed90e
|
7
|
+
data.tar.gz: 55ed36f65dff20ea4d59af454638049db05588b9251a717014b1862589dbf3ad03ba693e9cf6b8aa962c38f302460fd9d41af4cb26e12e21ca97ec1d95e4b5c4
|
data/README.md
CHANGED
@@ -54,38 +54,40 @@ response = DailySummary.results(profile: profile, start_date: Date.current - 7.d
|
|
54
54
|
# Deprecate
|
55
55
|
response.raw_attributes
|
56
56
|
|
57
|
-
|
57
|
+
# [DEPRECATION] `raw_attributes` is deprecated. Please use `primary` instead.
|
58
|
+
# => [#<struct date="20171122", pageviews="137", sessions="73", users="51", newUsers="43", bounceRate="69.56521739130434", pageviewsPerSession="2.608695652173913", avgSessionDuration="87.69565217391305">,
|
58
59
|
# ...
|
59
|
-
# #<
|
60
|
+
# #<struct date="20171129", pageviews="95", sessions="67", users="44", newUsers="32", bounceRate="80.0", pageviewsPerSession="2.25", avgSessionDuration="42.0">]
|
60
61
|
|
61
62
|
response.primary
|
62
63
|
|
63
|
-
|
64
|
+
# => [#<struct date="20171122", pageviews="137", sessions="73", users="51", newUsers="43", bounceRate="69.56521739130434", pageviewsPerSession="2.608695652173913", avgSessionDuration="87.69565217391305">,
|
64
65
|
# ...
|
65
|
-
# #<
|
66
|
+
# #<struct date="20171129", pageviews="95", sessions="67", users="44", newUsers="32", bounceRate="80.0", pageviewsPerSession="2.25", avgSessionDuration="42.0">]
|
66
67
|
|
67
68
|
response.comparing
|
68
69
|
|
69
|
-
|
70
|
+
# => [#<struct date="20171022", pageviews="130", sessions="69", users="45", newUsers="40", bounceRate="70.09567898751234", pageviewsPerSession="1.884057975234981", avgSessionDuration="85.02349863284283">,
|
70
71
|
# ...
|
71
|
-
# #<
|
72
|
+
# #<struct date="20171029", pageviews="95", sessions="67", users="44", newUsers="32", bounceRate="80.0", pageviewsPerSession="2.25", avgSessionDuration="42.0">]
|
72
73
|
|
73
74
|
# Deprecate
|
74
75
|
response.total_values
|
75
76
|
|
76
|
-
|
77
|
+
# [DEPRECATION] `total_values` is deprecated. Please use `primary_total` instead.
|
78
|
+
#=> #<struct pageviews="646", sessions="308", users="223", newUsers="144", bounceRate="77.77777777777779", pageviewsPerSession="2.3518518518518519", avgSessionDuration="62.148148148148145">
|
77
79
|
|
78
80
|
response.primary_total
|
79
81
|
|
80
|
-
|
82
|
+
# => #<struct pageviews="646", sessions="308", users="223", newUsers="144", bounceRate="77.77777777777779", pageviewsPerSession="2.3518518518518519", avgSessionDuration="62.148148148148145">
|
81
83
|
|
82
84
|
response.comparing_total
|
83
85
|
|
84
|
-
|
86
|
+
# => #<struct pageviews="640", sessions="299", users="213", newUsers="138", bounceRate="75.97253924292489", pageviewsPerSession="2.1404682398523578", avgSessionDuration="60.814845134904329">
|
85
87
|
|
86
88
|
response.data?
|
87
89
|
|
88
|
-
|
90
|
+
# => true
|
89
91
|
```
|
90
92
|
|
91
93
|
#### Filtering
|
data/lib/hisui.rb
CHANGED
data/lib/hisui/model.rb
CHANGED
@@ -2,7 +2,7 @@ module Hisui
|
|
2
2
|
module Model
|
3
3
|
# Adds metrics to the class for retrieval from GA
|
4
4
|
#
|
5
|
-
# @param
|
5
|
+
# @param field [Symbol] the names of the fields to retrieve
|
6
6
|
# @return [ListParameter] the set of all metrics
|
7
7
|
def metrics(*field)
|
8
8
|
@metrics ||= Set.new([])
|
@@ -12,7 +12,7 @@ module Hisui
|
|
12
12
|
|
13
13
|
# Adds dimensions to the class for retrieval from GA
|
14
14
|
#
|
15
|
-
# @param
|
15
|
+
# @param field [Symbol] the names of the fields to retrieve
|
16
16
|
# @return [ListParameter] the set of all dimensions
|
17
17
|
def dimensions(*field)
|
18
18
|
@dimensions ||= Set.new([])
|
data/lib/hisui/response.rb
CHANGED
@@ -1,9 +1,7 @@
|
|
1
1
|
module Hisui
|
2
2
|
class Response
|
3
|
-
attr_reader :response
|
4
|
-
|
5
3
|
def initialize(response)
|
6
|
-
@
|
4
|
+
@ga_data = GaData.new(response)
|
7
5
|
end
|
8
6
|
|
9
7
|
def raw_attributes
|
@@ -12,74 +10,15 @@ module Hisui
|
|
12
10
|
end
|
13
11
|
|
14
12
|
def primary
|
15
|
-
@primary ||=
|
16
|
-
primary = []
|
17
|
-
|
18
|
-
data.try(:rows).try(:each) do |row|
|
19
|
-
row_data = []
|
20
|
-
row.dimensions.each do |dimension|
|
21
|
-
row_data << dimension
|
22
|
-
end
|
23
|
-
|
24
|
-
row.metrics.first.values.each do |value|
|
25
|
-
row_data << value
|
26
|
-
end
|
27
|
-
|
28
|
-
primary << Hash[fields.zip(row_data)]
|
29
|
-
end
|
30
|
-
|
31
|
-
primary.map { |attributes| OpenStruct.new(attributes) }
|
32
|
-
end
|
13
|
+
@primary ||= @ga_data.construct(:first)
|
33
14
|
end
|
34
15
|
|
35
16
|
def comparing
|
36
|
-
@comparing ||=
|
37
|
-
comparing = []
|
38
|
-
|
39
|
-
data.try(:rows).try(:each) do |row|
|
40
|
-
row_data = []
|
41
|
-
row.dimensions.each do |dimension|
|
42
|
-
row_data << dimension
|
43
|
-
end
|
44
|
-
|
45
|
-
row.try(:metrics).try(:second).try(:values).try(:each) do |value|
|
46
|
-
row_data << value
|
47
|
-
end
|
48
|
-
|
49
|
-
comparing << Hash[fields.zip(row_data)]
|
50
|
-
end
|
51
|
-
|
52
|
-
comparing.map { |attributes| OpenStruct.new(attributes) }
|
53
|
-
end
|
17
|
+
@comparing ||= @ga_data.construct(:second)
|
54
18
|
end
|
55
19
|
|
56
20
|
def rows
|
57
|
-
@rows ||=
|
58
|
-
rows = []
|
59
|
-
|
60
|
-
data.try(:rows).try(:each) do |row|
|
61
|
-
dimension_values = row.dimensions
|
62
|
-
primary_data = []
|
63
|
-
comparing_data = []
|
64
|
-
|
65
|
-
row.metrics.first.values.each do |value|
|
66
|
-
primary_data << value
|
67
|
-
end
|
68
|
-
|
69
|
-
if row.metrics.second
|
70
|
-
row.metrics.second.values.each do |value|
|
71
|
-
comparing_data << value
|
72
|
-
end
|
73
|
-
end
|
74
|
-
|
75
|
-
rows << {
|
76
|
-
dimensions: OpenStruct.new(Hash[dimensions.zip(dimension_values)]),
|
77
|
-
primary: OpenStruct.new(Hash[metrics.zip(primary_data)]),
|
78
|
-
comparing: OpenStruct.new(Hash[metrics.zip(comparing_data)]) }
|
79
|
-
end
|
80
|
-
|
81
|
-
rows.map { |attributes| OpenStruct.new(attributes) }
|
82
|
-
end
|
21
|
+
@rows ||= @ga_data.rows
|
83
22
|
end
|
84
23
|
|
85
24
|
def total_values
|
@@ -88,57 +27,15 @@ module Hisui
|
|
88
27
|
end
|
89
28
|
|
90
29
|
def primary_total
|
91
|
-
@primary_total ||=
|
30
|
+
@primary_total ||= @ga_data.sum(:first)
|
92
31
|
end
|
93
32
|
|
94
33
|
def comparing_total
|
95
|
-
@comparing_total ||=
|
34
|
+
@comparing_total ||= @ga_data.sum(:second)
|
96
35
|
end
|
97
36
|
|
98
37
|
def data?
|
99
|
-
data
|
100
|
-
end
|
101
|
-
|
102
|
-
private
|
103
|
-
|
104
|
-
def column_header
|
105
|
-
@column_header ||= response.reports.first.column_header
|
106
|
-
end
|
107
|
-
|
108
|
-
def dimensions
|
109
|
-
@dimensions ||= begin
|
110
|
-
column_header.dimensions.each_with_object([]) do |dimension, arr|
|
111
|
-
arr << Hisui.from_ga_string(dimension)
|
112
|
-
end
|
113
|
-
end
|
114
|
-
end
|
115
|
-
|
116
|
-
def metrics
|
117
|
-
@metrics ||= begin
|
118
|
-
column_header.metric_header.metric_header_entries.each_with_object([]) do |metric, arr|
|
119
|
-
arr << Hisui.from_ga_string(metric.name)
|
120
|
-
end
|
121
|
-
end
|
122
|
-
end
|
123
|
-
|
124
|
-
def fields
|
125
|
-
@fields ||= begin
|
126
|
-
fields = []
|
127
|
-
|
128
|
-
column_header.dimensions.each do |dimension|
|
129
|
-
fields << Hisui.from_ga_string(dimension)
|
130
|
-
end
|
131
|
-
|
132
|
-
column_header.metric_header.metric_header_entries.each do |metric|
|
133
|
-
fields << Hisui.from_ga_string(metric.name)
|
134
|
-
end
|
135
|
-
|
136
|
-
fields
|
137
|
-
end
|
138
|
-
end
|
139
|
-
|
140
|
-
def data
|
141
|
-
@data ||= response.reports.first.data
|
38
|
+
@ga_data.data?
|
142
39
|
end
|
143
40
|
end
|
144
41
|
end
|
@@ -0,0 +1,105 @@
|
|
1
|
+
module Hisui
|
2
|
+
class Response
|
3
|
+
class GaData
|
4
|
+
attr_reader :response
|
5
|
+
|
6
|
+
def initialize(response)
|
7
|
+
@response = response
|
8
|
+
end
|
9
|
+
|
10
|
+
def construct(ordinal)
|
11
|
+
row_data_struct = Struct.new(*fields)
|
12
|
+
|
13
|
+
data.try(:rows).try(:each_with_object, []) do |row, arr|
|
14
|
+
row_data = []
|
15
|
+
row.dimensions.each do |dimension|
|
16
|
+
row_data << dimension
|
17
|
+
end
|
18
|
+
|
19
|
+
row.try(:metrics).try(ordinal.to_sym).try(:values).try(:each) do |value|
|
20
|
+
row_data << value
|
21
|
+
end
|
22
|
+
|
23
|
+
arr << row_data_struct.new(*row_data)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
def sum(ordinal)
|
28
|
+
total_struct = Struct.new(*metrics)
|
29
|
+
total_struct.new(*data.totals.try(ordinal).try(:values))
|
30
|
+
end
|
31
|
+
|
32
|
+
def rows
|
33
|
+
@rows ||= begin
|
34
|
+
data.try(:rows).try(:each_with_object, []) do |row, arr|
|
35
|
+
dimension_values = row.dimensions
|
36
|
+
primary_data = []
|
37
|
+
comparing_data = []
|
38
|
+
|
39
|
+
row.metrics.first.values.each do |value|
|
40
|
+
primary_data << value
|
41
|
+
end
|
42
|
+
|
43
|
+
if row.metrics.second
|
44
|
+
row.metrics.second.values.each do |value|
|
45
|
+
comparing_data << value
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
rows_struct = Struct.new(:dimensions, :primary, :comparing)
|
50
|
+
dimension_struct = Struct.new(*dimensions)
|
51
|
+
metric_struct = Struct.new(*metrics)
|
52
|
+
|
53
|
+
arr << rows_struct.new(dimension_struct.new(*dimension_values), metric_struct.new(*primary_data), metric_struct.new(*comparing_data))
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
def data?
|
59
|
+
data.row_count.to_i > 0
|
60
|
+
end
|
61
|
+
|
62
|
+
private
|
63
|
+
|
64
|
+
def column_header
|
65
|
+
@column_header ||= response.reports.first.column_header
|
66
|
+
end
|
67
|
+
|
68
|
+
def dimensions
|
69
|
+
@dimensions ||= begin
|
70
|
+
column_header.dimensions.each_with_object([]) do |dimension, arr|
|
71
|
+
arr << Hisui.from_ga_string(dimension).to_sym
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
def metrics
|
77
|
+
@metrics ||= begin
|
78
|
+
column_header.metric_header.metric_header_entries.each_with_object([]) do |metric, arr|
|
79
|
+
arr << Hisui.from_ga_string(metric.name).to_sym
|
80
|
+
end
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
def fields
|
85
|
+
@fields ||= begin
|
86
|
+
fields = []
|
87
|
+
|
88
|
+
column_header.dimensions.each do |dimension|
|
89
|
+
fields << Hisui.from_ga_string(dimension).to_sym
|
90
|
+
end
|
91
|
+
|
92
|
+
column_header.metric_header.metric_header_entries.each do |metric|
|
93
|
+
fields << Hisui.from_ga_string(metric.name).to_sym
|
94
|
+
end
|
95
|
+
|
96
|
+
fields
|
97
|
+
end
|
98
|
+
end
|
99
|
+
|
100
|
+
def data
|
101
|
+
@data ||= response.reports.first.data
|
102
|
+
end
|
103
|
+
end
|
104
|
+
end
|
105
|
+
end
|
data/lib/hisui/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hisui
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- ikepon
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-08-
|
11
|
+
date: 2018-08-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -172,6 +172,7 @@ files:
|
|
172
172
|
- lib/hisui/model.rb
|
173
173
|
- lib/hisui/request.rb
|
174
174
|
- lib/hisui/response.rb
|
175
|
+
- lib/hisui/response/ga_data.rb
|
175
176
|
- lib/hisui/user.rb
|
176
177
|
- lib/hisui/version.rb
|
177
178
|
homepage: https://github.com/ikepon/hisui
|