awis-sdk-ruby 1.1.0 → 1.1.1
Sign up to get free protection for your applications and to get access to all the features.
- 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
|