awis-sdk-ruby 1.1.0 → 1.1.1
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/.rubocop.yml +1 -1
- data/README.md +2 -1
- data/lib/awis.rb +1 -1
- data/lib/awis/api/traffic_history.rb +1 -1
- data/lib/awis/connection.rb +7 -7
- data/lib/awis/models/url_info.rb +211 -49
- data/lib/awis/utils/xml.rb +2 -0
- data/lib/awis/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 84250ba83bc8498d3506fdf84111da57be3f2fc4
|
4
|
+
data.tar.gz: cb4821875ce36ffbf6a880d0f71cae358d48f504
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6e33e6d07dfa95bd5b19277324391d0e25709a1cc5a0628035946aa532267ed9ba2c4679365191b8691fe1269f19cf8798d8f9e056b9e099e962d47e64539180
|
7
|
+
data.tar.gz: ac257c8001b304f1a74f0374bc384ec028e7fd3cdf9bef02fe1614b71837b378d5871b13ce5a76734b3db119fda51d520c001c239c04524dad9386b71d33326b
|
data/.rubocop.yml
CHANGED
data/README.md
CHANGED
@@ -43,6 +43,7 @@ Returns object that contains attributes:
|
|
43
43
|
* data_url
|
44
44
|
* rank
|
45
45
|
* asin
|
46
|
+
* xml
|
46
47
|
|
47
48
|
Returns object that contains relationships:
|
48
49
|
|
@@ -175,4 +176,4 @@ Awis is using `nokogiri` to parse XML documents.
|
|
175
176
|
|
176
177
|
### Copyright
|
177
178
|
|
178
|
-
Copyright (c) Encore Shao. See LICENSE for details.
|
179
|
+
Copyright (c) Encore Shao. See LICENSE for details.
|
data/lib/awis.rb
CHANGED
@@ -28,7 +28,7 @@ module Awis
|
|
28
28
|
|
29
29
|
@arguments = arguments
|
30
30
|
@arguments[:range] = arguments.fetch(:range, 31)
|
31
|
-
@arguments[:start] = arguments.fetch(:start) { Time.
|
31
|
+
@arguments[:start] = arguments.fetch(:start) { Time.now - (3600 * 24 * @arguments[:range].to_i) }
|
32
32
|
end
|
33
33
|
|
34
34
|
def start_date
|
data/lib/awis/connection.rb
CHANGED
@@ -10,14 +10,14 @@ module Awis
|
|
10
10
|
attr_reader :params, :secret_access_key, :access_key_id
|
11
11
|
|
12
12
|
HEADERS = {
|
13
|
-
'
|
14
|
-
'
|
15
|
-
'
|
13
|
+
'accept' => 'application/xml',
|
14
|
+
'content-type' => 'application/xml',
|
15
|
+
'user-agent' => "awis-sdk-ruby v#{Awis::VERSION}"
|
16
16
|
}.freeze
|
17
17
|
|
18
18
|
def initialize(options = {})
|
19
|
-
@secret_access_key = options.fetch(:secret_access_key, Awis.config.
|
20
|
-
@access_key_id = options.fetch(:access_key_id, Awis.config.
|
19
|
+
@secret_access_key = options.fetch(:secret_access_key, Awis.config.secret_access_key)
|
20
|
+
@access_key_id = options.fetch(:access_key_id, Awis.config.access_key_id)
|
21
21
|
raise CertificateError, 'Amazon access certificate is missing!' if @secret_access_key.nil? || @access_key_id.nil?
|
22
22
|
|
23
23
|
setup_options!
|
@@ -32,7 +32,7 @@ module Awis
|
|
32
32
|
|
33
33
|
def get(params = {})
|
34
34
|
@params = params
|
35
|
-
handle_response(request).body
|
35
|
+
handle_response(request).body
|
36
36
|
end
|
37
37
|
|
38
38
|
private
|
@@ -77,7 +77,7 @@ module Awis
|
|
77
77
|
end
|
78
78
|
|
79
79
|
def uri
|
80
|
-
@uri ||= URI.parse("#{protocol}://#{Awis::SERVICE_HOST}/#{Awis::SERVICE_PATH}
|
80
|
+
@uri ||= URI.parse("#{protocol}://#{Awis::SERVICE_HOST}/#{Awis::SERVICE_PATH}?#{query}")
|
81
81
|
end
|
82
82
|
|
83
83
|
def headers
|
data/lib/awis/models/url_info.rb
CHANGED
@@ -3,17 +3,21 @@
|
|
3
3
|
module Awis
|
4
4
|
module Models
|
5
5
|
class UrlInfo < Base
|
6
|
-
attr_accessor :data_url, :rank, :asin, :contact_info, :content_data, :usage_statistics, :related_links,
|
6
|
+
attr_accessor :data_url, :rank, :asin, :contact_info, :content_data, :usage_statistics, :related_links,
|
7
|
+
:categories, :xml, :contributing_subdomains, :rank_by_country
|
7
8
|
|
8
9
|
def initialize(response)
|
9
10
|
@usage_statistics = []
|
10
11
|
@related_links = []
|
11
12
|
@categories = []
|
13
|
+
@contributing_subdomains = []
|
14
|
+
@rank_by_country = []
|
12
15
|
|
13
16
|
setup_data! loading_response(response)
|
14
17
|
end
|
15
18
|
|
16
19
|
def setup_data!(response)
|
20
|
+
@xml = response
|
17
21
|
content_data = {
|
18
22
|
owned_domains: []
|
19
23
|
}
|
@@ -23,94 +27,122 @@ module Awis
|
|
23
27
|
statistics = []
|
24
28
|
related_related_links = []
|
25
29
|
category_data = []
|
30
|
+
rank_by_country = []
|
31
|
+
contributing_subdomains = []
|
26
32
|
|
27
33
|
response.each_node do |node, path|
|
28
34
|
text = node.inner_xml
|
29
|
-
|
30
|
-
|
35
|
+
candidate_text = text.delete(',')
|
36
|
+
value = if integer_value?(candidate_text) && node.name != 'aws:Delta'
|
37
|
+
candidate_text.to_i
|
38
|
+
elsif float_value?(candidate_text)
|
39
|
+
candidate_text.to_f
|
40
|
+
elsif text.is_a?(String) && text.empty?
|
41
|
+
nil
|
42
|
+
else
|
43
|
+
text
|
44
|
+
end
|
31
45
|
|
32
46
|
if node.name == 'aws:RequestId'
|
33
|
-
@request_id ||=
|
47
|
+
@request_id ||= value
|
34
48
|
elsif node.name == 'aws:StatusCode'
|
35
|
-
@status_code ||=
|
49
|
+
@status_code ||= value
|
36
50
|
elsif node.name == 'aws:DataUrl' && path == "#{traffic_node_name}/aws:DataUrl"
|
37
|
-
@data_url =
|
51
|
+
@data_url = value
|
38
52
|
elsif node.name == 'aws:Asin' && path == "#{traffic_node_name}/aws:Asin"
|
39
|
-
@asin =
|
53
|
+
@asin = value
|
40
54
|
elsif node.name == 'aws:Rank' && path == "#{traffic_node_name}/aws:Rank"
|
41
|
-
@rank =
|
55
|
+
@rank = value
|
42
56
|
elsif node.name == 'aws:DataUrl' && path == "#{content_node_name}/aws:DataUrl"
|
43
|
-
content_data[:data_url] =
|
57
|
+
content_data[:data_url] = value
|
44
58
|
elsif node.name == 'aws:Title' && path == "#{content_node_name}/aws:SiteData/aws:Title"
|
45
|
-
content_data[:site_title] =
|
59
|
+
content_data[:site_title] = value
|
46
60
|
elsif node.name == 'aws:Description'
|
47
|
-
content_data[:site_description] =
|
61
|
+
content_data[:site_description] = value
|
48
62
|
elsif node.name == 'aws:MedianLoadTime'
|
49
|
-
content_data[:speed_median_load_time] =
|
63
|
+
content_data[:speed_median_load_time] = value
|
50
64
|
elsif node.name == 'aws:Percentile'
|
51
|
-
content_data[:speed_percentile] =
|
65
|
+
content_data[:speed_percentile] = value
|
52
66
|
elsif node.name == 'aws:AdultContent'
|
53
|
-
content_data[:adult_content] =
|
67
|
+
content_data[:adult_content] = value
|
54
68
|
elsif node.name == 'aws:Locale'
|
55
|
-
content_data[:language_locale] =
|
69
|
+
content_data[:language_locale] = value
|
56
70
|
elsif node.name == 'aws:LinksInCount'
|
57
|
-
content_data[:links_in_count] =
|
71
|
+
content_data[:links_in_count] = value
|
58
72
|
elsif node.name == 'aws:Domain' && path == "#{content_node_name}/aws:OwnedDomains/aws:OwnedDomain/aws:Domain"
|
59
|
-
content_data[:owned_domains] << { domain:
|
73
|
+
content_data[:owned_domains] << { domain: value }
|
60
74
|
elsif node.name == 'aws:Title' && path == "#{content_node_name}/aws:OwnedDomains/aws:OwnedDomain/aws:Title"
|
61
|
-
content_data[:owned_domains] << { title:
|
75
|
+
content_data[:owned_domains] << { title: value }
|
62
76
|
elsif node.name == 'aws:OnlineSince'
|
63
|
-
content_data[:online_since] =
|
77
|
+
content_data[:online_since] = value
|
64
78
|
elsif node.name == 'aws:DataUrl' && path == "#{root_node_name}/aws:ContactInfo/aws:DataUrl"
|
65
|
-
contact_info[:data_url] =
|
79
|
+
contact_info[:data_url] = value
|
66
80
|
elsif node.name == 'aws:OwnerName'
|
67
|
-
contact_info[:owner_name] =
|
81
|
+
contact_info[:owner_name] = value
|
68
82
|
elsif node.name == 'aws:Email'
|
69
|
-
contact_info[:email] =
|
83
|
+
contact_info[:email] = value
|
70
84
|
elsif node.name == 'aws:PhysicalAddress'
|
71
|
-
contact_info[:physical_address] =
|
85
|
+
contact_info[:physical_address] = value
|
72
86
|
elsif node.name == 'aws:CompanyStockTicker'
|
73
|
-
contact_info[:company_stock_ticker] =
|
87
|
+
contact_info[:company_stock_ticker] = value
|
74
88
|
elsif node.name == 'aws:PhoneNumber'
|
75
|
-
contact_info[:phone_numbers] <<
|
89
|
+
contact_info[:phone_numbers] << value
|
76
90
|
elsif node.name == 'aws:DataUrl' && path == "#{related_links_node_name}/aws:DataUrl"
|
77
|
-
related_related_links << { data_url:
|
91
|
+
related_related_links << { data_url: value }
|
78
92
|
elsif node.name == 'aws:NavigableUrl' && path == "#{related_links_node_name}/aws:NavigableUrl"
|
79
|
-
related_related_links << { navigable_url:
|
93
|
+
related_related_links << { navigable_url: value }
|
80
94
|
elsif node.name == 'aws:Title' && path == "#{related_links_node_name}/aws:Title"
|
81
|
-
related_related_links << { title:
|
95
|
+
related_related_links << { title: value }
|
82
96
|
elsif node.name == 'aws:Title' && path == "#{categories_node_name}/aws:Title"
|
83
|
-
category_data << { title:
|
97
|
+
category_data << { title: value }
|
84
98
|
elsif node.name == 'aws:AbsolutePath' && path == "#{categories_node_name}/aws:AbsolutePath"
|
85
|
-
category_data << { absolute_path:
|
99
|
+
category_data << { absolute_path: value }
|
86
100
|
elsif node.name == 'aws:Months' && path == "#{statistic_node_name}/aws:TimeRange/aws:Months"
|
87
|
-
statistics << { time_range_months:
|
101
|
+
statistics << { time_range_months: value }
|
88
102
|
elsif node.name == 'aws:Days' && path == "#{statistic_node_name}/aws:TimeRange/aws:Days"
|
89
|
-
statistics << { time_range_days:
|
103
|
+
statistics << { time_range_days: value }
|
90
104
|
elsif node.name == 'aws:Value' && path == "#{statistic_node_name}/aws:Rank/aws:Value"
|
91
|
-
statistics << { rank_value:
|
105
|
+
statistics << { rank_value: value }
|
92
106
|
elsif node.name == 'aws:Delta' && path == "#{statistic_node_name}/aws:Rank/aws:Delta"
|
93
|
-
statistics << { rank_delta:
|
107
|
+
statistics << { rank_delta: value }
|
94
108
|
elsif node.name == 'aws:Value' && path == "#{statistic_node_name}/aws:Reach/aws:Rank/aws:Value"
|
95
|
-
statistics << { reach_rank_value:
|
109
|
+
statistics << { reach_rank_value: value }
|
96
110
|
elsif node.name == 'aws:Delta' && path == "#{statistic_node_name}/aws:Reach/aws:Rank/aws:Delta"
|
97
|
-
statistics << { reach_rank_delta:
|
111
|
+
statistics << { reach_rank_delta: value }
|
98
112
|
elsif node.name == 'aws:Value' && path == "#{statistic_node_name}/aws:Reach/aws:PerMillion/aws:Value"
|
99
|
-
statistics << { reach_per_million_value:
|
113
|
+
statistics << { reach_per_million_value: value }
|
100
114
|
elsif node.name == 'aws:Delta' && path == "#{statistic_node_name}/aws:Reach/aws:PerMillion/aws:Delta"
|
101
|
-
statistics << { reach_per_million_delta:
|
115
|
+
statistics << { reach_per_million_delta: value }
|
102
116
|
elsif node.name == 'aws:Value' && path == "#{statistic_node_name}/aws:PageViews/aws:PerMillion/aws:Value"
|
103
|
-
statistics << {
|
117
|
+
statistics << { page_views_per_million_value: value }
|
104
118
|
elsif node.name == 'aws:Delta' && path == "#{statistic_node_name}/aws:PageViews/aws:PerMillion/aws:Delta"
|
105
|
-
statistics << {
|
119
|
+
statistics << { page_views_per_million_delta: value }
|
106
120
|
elsif node.name == 'aws:Value' && path == "#{statistic_node_name}/aws:PageViews/aws:Rank/aws:Value"
|
107
|
-
statistics << {
|
121
|
+
statistics << { page_views_rank_value: value }
|
108
122
|
elsif node.name == 'aws:Delta' && path == "#{statistic_node_name}/aws:PageViews/aws:Rank/aws:Delta"
|
109
|
-
statistics << {
|
123
|
+
statistics << { page_views_rank_delta: value }
|
110
124
|
elsif node.name == 'aws:Value' && path == "#{statistic_node_name}/aws:PageViews/aws:PerUser/aws:Value"
|
111
|
-
statistics << {
|
125
|
+
statistics << { page_views_per_user_value: value }
|
112
126
|
elsif node.name == 'aws:Delta' && path == "#{statistic_node_name}/aws:PageViews/aws:PerUser/aws:Delta"
|
113
|
-
statistics << {
|
127
|
+
statistics << { page_views_per_user_delta: value }
|
128
|
+
elsif node.name == 'aws:Country' && path == rank_by_country_node_name
|
129
|
+
rank_by_country << { country_code: node.attributes['Code'] }
|
130
|
+
elsif node.name == 'aws:Rank' && path == "#{rank_by_country_node_name}/aws:Rank"
|
131
|
+
rank_by_country << { rank: value }
|
132
|
+
elsif node.name == 'aws:PageViews' && path == "#{rank_by_country_node_name}/aws:Contribution/aws:PageViews"
|
133
|
+
rank_by_country << { contribution_page_views: value }
|
134
|
+
elsif node.name == 'aws:Users' && path == "#{rank_by_country_node_name}/aws:Contribution/aws:Users"
|
135
|
+
rank_by_country << { contribution_users: value }
|
136
|
+
elsif node.name == 'aws:DataUrl' && path == "#{contributing_subdomains_node_name}/aws:DataUrl"
|
137
|
+
contributing_subdomains << { data_url: value }
|
138
|
+
elsif node.name == 'aws:Months' && path == "#{contributing_subdomains_node_name}/aws:TimeRange/aws:Months"
|
139
|
+
contributing_subdomains << { time_range_months: value }
|
140
|
+
elsif node.name == 'aws:Percentage' && path == "#{contributing_subdomains_node_name}/aws:Reach/aws:Percentage"
|
141
|
+
contributing_subdomains << { reach_percentage: value }
|
142
|
+
elsif node.name == 'aws:Percentage' && path == "#{contributing_subdomains_node_name}/aws:PageViews/aws:Percentage"
|
143
|
+
contributing_subdomains << { page_views_percentage: value }
|
144
|
+
elsif node.name == 'aws:PerUser' && path == "#{contributing_subdomains_node_name}/aws:PageViews/aws:PerUser"
|
145
|
+
contributing_subdomains << { page_views_per_user: value }
|
114
146
|
end
|
115
147
|
end
|
116
148
|
|
@@ -120,6 +152,8 @@ module Awis
|
|
120
152
|
relationship_collections(@usage_statistics, statistics, 13, UsageStatistic)
|
121
153
|
relationship_collections(@related_links, related_related_links, 3, RelatedLink)
|
122
154
|
relationship_collections(@categories, category_data, 3, CategoryData)
|
155
|
+
relationship_collections(@rank_by_country, rank_by_country, 4, RankByCountry)
|
156
|
+
relationship_collections(@contributing_subdomains, contributing_subdomains, 5, ContributingSubdomain)
|
123
157
|
end
|
124
158
|
|
125
159
|
def is_404?
|
@@ -155,6 +189,126 @@ module Awis
|
|
155
189
|
def statistic_node_name
|
156
190
|
"#{traffic_node_name}/aws:UsageStatistics/aws:UsageStatistic"
|
157
191
|
end
|
192
|
+
|
193
|
+
def contributing_subdomains_node_name
|
194
|
+
"#{traffic_node_name}/aws:ContributingSubdomains/aws:ContributingSubdomain"
|
195
|
+
end
|
196
|
+
|
197
|
+
def rank_by_country_node_name
|
198
|
+
"#{traffic_node_name}/aws:RankByCountry/aws:Country"
|
199
|
+
end
|
200
|
+
|
201
|
+
def has_data?
|
202
|
+
!@rank.nil?
|
203
|
+
end
|
204
|
+
|
205
|
+
def geos_sorted
|
206
|
+
rank_by_country.select { |rbc| !rbc.rank.nil? && !rbc.contribution_page_views.nil? }.
|
207
|
+
sort_by { |rbc| - rbc.contribution_page_views.round }.
|
208
|
+
map { |rbc| { rbc.country_code => rbc.contribution_page_views.round } }
|
209
|
+
end
|
210
|
+
|
211
|
+
def geos_hash
|
212
|
+
@geos_hash ||= geos_sorted.reduce({}, :merge)
|
213
|
+
end
|
214
|
+
|
215
|
+
def domains
|
216
|
+
content_data.owned_domains.map(&:domain)
|
217
|
+
end
|
218
|
+
|
219
|
+
def contributing_hostnames
|
220
|
+
contributing_subdomains.map(&:data_url).reject { |hostname| hostname == 'OTHER' }
|
221
|
+
end
|
222
|
+
|
223
|
+
def pvs_per_user
|
224
|
+
usage_statistics.first.page_views_per_user_value
|
225
|
+
end
|
226
|
+
|
227
|
+
def pvs_rank
|
228
|
+
usage_statistics.first.page_views_rank_value
|
229
|
+
end
|
230
|
+
|
231
|
+
def get_pvs_per_mil
|
232
|
+
usage_statistics.first.page_views_per_million_value
|
233
|
+
end
|
234
|
+
|
235
|
+
def speed_percentile
|
236
|
+
content_data.speed_percentile
|
237
|
+
end
|
238
|
+
|
239
|
+
def get_median_load_time
|
240
|
+
content_data.speed_median_load_time
|
241
|
+
end
|
242
|
+
|
243
|
+
def daily_GDN_page_views
|
244
|
+
if rank
|
245
|
+
alexa_gdn.each do |max_pvs, gdn_range|
|
246
|
+
return gdn_range if rank > max_pvs
|
247
|
+
end
|
248
|
+
end
|
249
|
+
end
|
250
|
+
|
251
|
+
def speed_rating
|
252
|
+
if get_median_load_time
|
253
|
+
alexa_speed_rating.each do |max_load_time, rating|
|
254
|
+
return rating if get_median_load_time > max_load_time
|
255
|
+
end
|
256
|
+
end
|
257
|
+
'AVERAGE ( < 5s)'
|
258
|
+
end
|
259
|
+
|
260
|
+
def alexa_speed_rating
|
261
|
+
{
|
262
|
+
2200 => 'POOR ( > 5s)',
|
263
|
+
1200 => 'AVERAGE ( < 5s)',
|
264
|
+
0 => 'GOOD ( < 3s)'
|
265
|
+
}
|
266
|
+
end
|
267
|
+
|
268
|
+
def rank_page_view
|
269
|
+
{
|
270
|
+
20000 => '< 1K',
|
271
|
+
5000 => '1K - 10K',
|
272
|
+
3000 => '10K - 100K',
|
273
|
+
1900 => '100K - 500K',
|
274
|
+
1300 => '500K - 1M',
|
275
|
+
850 => '2M - 5M',
|
276
|
+
550 => '5M - 10M',
|
277
|
+
350 => '10M - 20M',
|
278
|
+
200 => '20M - 50M',
|
279
|
+
100 => '50M - 100M',
|
280
|
+
28 => '100M+'
|
281
|
+
}
|
282
|
+
end
|
283
|
+
|
284
|
+
def alexa_gdn
|
285
|
+
{
|
286
|
+
250000 => '< 1K',
|
287
|
+
100000 => '1K - 10K',
|
288
|
+
50000 => '10K - 100K',
|
289
|
+
20000 => '100K - 500K',
|
290
|
+
10000 => '500K - 1M',
|
291
|
+
5000 => '1M - 2M',
|
292
|
+
2000 => '2M - 5M',
|
293
|
+
1000 => '5M - 10M',
|
294
|
+
500 => '10M - 20M',
|
295
|
+
150 => '20M - 50M',
|
296
|
+
30 => '50M - 100M',
|
297
|
+
0 => '100M+'
|
298
|
+
}
|
299
|
+
end
|
300
|
+
|
301
|
+
private
|
302
|
+
|
303
|
+
def integer_value?(text)
|
304
|
+
text.to_i.to_s == text
|
305
|
+
end
|
306
|
+
|
307
|
+
def float_value?(text)
|
308
|
+
!!Float(text.delete('%'))
|
309
|
+
rescue StandardError
|
310
|
+
false
|
311
|
+
end
|
158
312
|
end
|
159
313
|
|
160
314
|
class ContentData < BaseEntity
|
@@ -190,7 +344,7 @@ module Awis
|
|
190
344
|
end
|
191
345
|
|
192
346
|
def phone_number_collections(phone_numbers)
|
193
|
-
return @phone_numbers = [] if phone_numbers.
|
347
|
+
return @phone_numbers = [] if phone_numbers.nil? || phone_numbers.empty?
|
194
348
|
|
195
349
|
phone_numbers.map { |item| @phone_numbers << PhoneNumber.new(item) }
|
196
350
|
end
|
@@ -212,12 +366,12 @@ module Awis
|
|
212
366
|
attr_accessor :time_range_months, :time_range_days, :rank_value, :rank_delta,
|
213
367
|
:reach_rank_value, :reach_rank_delta,
|
214
368
|
:reach_per_million_value, :reach_per_million_delta,
|
215
|
-
:
|
216
|
-
:
|
217
|
-
:
|
369
|
+
:page_views_per_million_value, :page_views_per_million_delta,
|
370
|
+
:page_views_rank_value, :page_views_rank_delta,
|
371
|
+
:page_views_per_user_value, :page_views_per_user_delta
|
218
372
|
|
219
373
|
def range_type
|
220
|
-
return 'month'
|
374
|
+
return 'month' unless time_range_months.nil? || time_range_months.empty?
|
221
375
|
|
222
376
|
'day'
|
223
377
|
end
|
@@ -226,5 +380,13 @@ module Awis
|
|
226
380
|
(time_range_months || time_range_days)
|
227
381
|
end
|
228
382
|
end
|
383
|
+
|
384
|
+
class ContributingSubdomain < BaseEntity
|
385
|
+
attr_accessor :data_url, :time_range_months, :reach_percentage, :page_views_percentage, :page_views_per_user
|
386
|
+
end
|
387
|
+
|
388
|
+
class RankByCountry < BaseEntity
|
389
|
+
attr_accessor :country_code, :rank, :contribution_page_views, :contribution_users
|
390
|
+
end
|
229
391
|
end
|
230
392
|
end
|
data/lib/awis/utils/xml.rb
CHANGED
data/lib/awis/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: awis-sdk-ruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1.
|
4
|
+
version: 1.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Encore Shao
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-10-
|
11
|
+
date: 2018-10-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: aws-sigv4
|