awis-sdk-ruby 0.0.6 → 0.0.7
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.
- data/README.md +3 -3
- data/lib/awis.rb +1 -1
- data/lib/awis/api/base.rb +16 -0
- data/lib/awis/api/category_browse.rb +7 -9
- data/lib/awis/api/category_listings.rb +9 -9
- data/lib/awis/api/sites_linking_in.rb +4 -10
- data/lib/awis/api/traffic_history.rb +2 -9
- data/lib/awis/api/url_info.rb +2 -8
- data/lib/awis/client.rb +1 -2
- data/lib/awis/connection.rb +2 -2
- data/lib/awis/hash.rb +0 -4
- data/lib/awis/models.rb +1 -1
- data/lib/awis/models/base.rb +1 -1
- data/lib/awis/models/category_browse.rb +1 -1
- data/lib/awis/models/traffic_history.rb +2 -4
- data/lib/awis/models/url_info.rb +5 -5
- data/lib/awis/version.rb +1 -1
- metadata +2 -2
data/README.md
CHANGED
@@ -44,9 +44,9 @@ Returns object that contains relationships:
|
|
44
44
|
|
45
45
|
* contact_info [:data_url, :owner_name, :email, :physical_address, :company_stock_ticker, :phone_numbers]
|
46
46
|
* content_data [:data_url, :site_title, :site_description, :speed_median_load_time, :speed_percentile, :adult_content, :language_locale, :links_in_count, :owned_domains]
|
47
|
-
* usage_statistics [:time_range_months, :time_range_days, :rank_value, :rank_delta, :reach_rank_value, :reach_rank_delta,
|
47
|
+
* usage_statistics [:time_range_months, :time_range_days, :rank_value, :rank_delta, :reach_rank_value, :reach_rank_delta,
|
48
48
|
:reach_per_million_value, :reach_per_million_delta, :reach_page_views_per_million_value, :reach_page_views_per_million_delta,
|
49
|
-
:reach_page_views_rank_value, :reach_page_views_rank_delta, :reach_page_views_per_user_value, :reach_page_views_per_user_delta]
|
49
|
+
:reach_page_views_rank_value, :reach_page_views_rank_delta, :reach_page_views_per_user_value, :reach_page_views_per_user_delta]
|
50
50
|
- add two methods: [range_type, range_count]
|
51
51
|
* related_links [:data_url, :navigable_url, :title]
|
52
52
|
* categories [:title, :absolute_path]
|
@@ -57,7 +57,7 @@ New methods:
|
|
57
57
|
|
58
58
|
You can specify options:
|
59
59
|
|
60
|
-
* url
|
60
|
+
* url
|
61
61
|
* response_group - which data to include in response (i.e. ["rank", "contact_info", "content_data"]) - defaults to all available
|
62
62
|
|
63
63
|
##### Get Sites Linking In
|
data/lib/awis.rb
CHANGED
data/lib/awis/api/base.rb
CHANGED
@@ -4,10 +4,21 @@ module Awis
|
|
4
4
|
include Utils::Extra
|
5
5
|
attr_reader :arguments, :response_body
|
6
6
|
|
7
|
+
def fetch(arguments = {})
|
8
|
+
validation_arguments!(arguments)
|
9
|
+
|
10
|
+
loading_response_body
|
11
|
+
self
|
12
|
+
end
|
13
|
+
|
7
14
|
def parsed_body
|
8
15
|
@parsed_body ||= MultiXml.parse(response_body)
|
9
16
|
end
|
10
17
|
|
18
|
+
def loading_response_body
|
19
|
+
@response_body = Awis::Connection.new.get(params)
|
20
|
+
end
|
21
|
+
|
11
22
|
def root_node_name
|
12
23
|
"#{action_name}Response"
|
13
24
|
end
|
@@ -22,6 +33,11 @@ module Awis
|
|
22
33
|
collection.uri
|
23
34
|
end
|
24
35
|
|
36
|
+
def before_validation_arguments(arguments)
|
37
|
+
raise ArgumentError, "Invalid arguments. should be like { url: 'site.com' }" unless arguments.is_a?(Hash)
|
38
|
+
raise ArgumentError, "Invalid arguments. the url must be configured." unless arguments.has_key?(:url)
|
39
|
+
end
|
40
|
+
|
25
41
|
class << self
|
26
42
|
def loading_data_from_xml(xml_file_path)
|
27
43
|
MultiXml.parse(File.new(xml_file_path))
|
@@ -3,14 +3,6 @@ module Awis
|
|
3
3
|
class CategoryBrowse < Base
|
4
4
|
DEFAULT_RESPONSE_GROUP = %w(categories related_categories language_categories letter_bars).freeze
|
5
5
|
|
6
|
-
def fetch(arguments = {})
|
7
|
-
raise ArgumentError.new("Valid category path (Top/Arts, Top/Business/Automotive)") unless arguments.has_key?(:path)
|
8
|
-
validation_arguments!(arguments)
|
9
|
-
|
10
|
-
@response_body = Awis::Connection.new.get(params)
|
11
|
-
self
|
12
|
-
end
|
13
|
-
|
14
6
|
def load_request_uri(arguments = {})
|
15
7
|
validation_arguments!(arguments)
|
16
8
|
|
@@ -18,9 +10,15 @@ module Awis
|
|
18
10
|
end
|
19
11
|
|
20
12
|
private
|
13
|
+
def before_validation_arguments(arguments)
|
14
|
+
raise ArgumentError, "Invalid arguments. should be like { path: 'Top/Arts' }" unless arguments.is_a?(Hash)
|
15
|
+
raise ArgumentError, "Invalid arguments. the path must be configured." unless arguments.has_key?(:path)
|
16
|
+
end
|
17
|
+
|
21
18
|
def validation_arguments!(arguments)
|
22
|
-
|
19
|
+
before_validation_arguments(arguments)
|
23
20
|
|
21
|
+
@arguments = arguments
|
24
22
|
@arguments[:response_group] = Array(arguments.fetch(:response_group, DEFAULT_RESPONSE_GROUP))
|
25
23
|
@arguments[:descriptions] = arguments.fetch(:descriptions, true)
|
26
24
|
end
|
@@ -1,13 +1,7 @@
|
|
1
1
|
module Awis
|
2
2
|
module API
|
3
3
|
class CategoryListings < Base
|
4
|
-
|
5
|
-
raise ArgumentError, "You must provide a URL" unless arguments.has_key?(:path)
|
6
|
-
validation_arguments!(arguments)
|
7
|
-
|
8
|
-
@response_body = Awis::Connection.new.get(params)
|
9
|
-
self
|
10
|
-
end
|
4
|
+
DEFAULT_RESPONSE_GROUP = %w(listings).freeze
|
11
5
|
|
12
6
|
def load_request_uri(arguments = {})
|
13
7
|
validation_arguments!(arguments)
|
@@ -16,9 +10,15 @@ module Awis
|
|
16
10
|
end
|
17
11
|
|
18
12
|
private
|
13
|
+
def before_validation_arguments(arguments)
|
14
|
+
raise ArgumentError, "Invalid arguments. should be like { path: '/Top/Games/Card_Games' }" unless arguments.is_a?(Hash)
|
15
|
+
raise ArgumentError, "Invalid arguments. the path must be configured." unless arguments.has_key?(:path)
|
16
|
+
end
|
17
|
+
|
19
18
|
def validation_arguments!(arguments)
|
20
|
-
|
19
|
+
before_validation_arguments(arguments)
|
21
20
|
|
21
|
+
@arguments = arguments
|
22
22
|
@arguments[:sort_by] = arguments.fetch(:sort_by, "popularity")
|
23
23
|
@arguments[:recursive] = arguments.fetch(:recursive, true)
|
24
24
|
@arguments[:descriptions] = arguments.fetch(:descriptions, true)
|
@@ -29,7 +29,7 @@ module Awis
|
|
29
29
|
def params
|
30
30
|
{
|
31
31
|
"Action" => "CategoryListings",
|
32
|
-
"ResponseGroup" =>
|
32
|
+
"ResponseGroup" => DEFAULT_RESPONSE_GROUP[0],
|
33
33
|
"Path" => arguments[:path],
|
34
34
|
"Recursive" => recursive_param,
|
35
35
|
"Descriptions" => descriptions_params,
|
@@ -1,15 +1,7 @@
|
|
1
1
|
module Awis
|
2
2
|
module API
|
3
3
|
class SitesLinkingIn < Base
|
4
|
-
|
5
|
-
|
6
|
-
def fetch(arguments = {})
|
7
|
-
raise ArgumentError, "You must provide a URL" unless arguments.has_key?(:url)
|
8
|
-
validation_arguments!(arguments)
|
9
|
-
|
10
|
-
@response_body = Awis::Connection.new.get(params)
|
11
|
-
self
|
12
|
-
end
|
4
|
+
DEFAULT_RESPONSE_GROUP = %w(sites_linking_in).freeze
|
13
5
|
|
14
6
|
def load_request_uri(arguments = {})
|
15
7
|
validation_arguments!(arguments)
|
@@ -19,6 +11,8 @@ module Awis
|
|
19
11
|
|
20
12
|
private
|
21
13
|
def validation_arguments!(arguments)
|
14
|
+
before_validation_arguments(arguments)
|
15
|
+
|
22
16
|
@arguments = arguments
|
23
17
|
@arguments[:count] = arguments.fetch(:count, 20)
|
24
18
|
@arguments[:start] = arguments.fetch(:start, 0)
|
@@ -28,7 +22,7 @@ module Awis
|
|
28
22
|
{
|
29
23
|
"Action" => "SitesLinkingIn",
|
30
24
|
"Url" => arguments[:url],
|
31
|
-
"ResponseGroup" =>
|
25
|
+
"ResponseGroup" => DEFAULT_RESPONSE_GROUP[0],
|
32
26
|
"Count" => arguments[:count],
|
33
27
|
"Start" => arguments[:start]
|
34
28
|
}
|
@@ -1,14 +1,6 @@
|
|
1
1
|
module Awis
|
2
2
|
module API
|
3
3
|
class TrafficHistory < Base
|
4
|
-
def fetch(arguments = {})
|
5
|
-
raise ArgumentError, "Any valid URL." unless arguments.has_key?(:url)
|
6
|
-
|
7
|
-
validation_arguments!(arguments)
|
8
|
-
@response_body = Awis::Connection.new.get(params)
|
9
|
-
self
|
10
|
-
end
|
11
|
-
|
12
4
|
def load_request_uri(arguments = {})
|
13
5
|
validation_arguments!(arguments)
|
14
6
|
|
@@ -27,8 +19,9 @@ module Awis
|
|
27
19
|
end
|
28
20
|
|
29
21
|
def validation_arguments!(arguments)
|
30
|
-
|
22
|
+
before_validation_arguments(arguments)
|
31
23
|
|
24
|
+
@arguments = arguments
|
32
25
|
@arguments[:range] = arguments.fetch(:range, 31)
|
33
26
|
@arguments[:start] = arguments.fetch(:start) { Time.now - (3600 * 24 * @arguments[:range].to_i) }
|
34
27
|
end
|
data/lib/awis/api/url_info.rb
CHANGED
@@ -3,14 +3,6 @@ module Awis
|
|
3
3
|
class UrlInfo < Base
|
4
4
|
DEFAULT_RESPONSE_GROUP = %w(related_links categories rank rank_by_country usage_stats adult_content speed language owned_domains links_in_count site_data).freeze
|
5
5
|
|
6
|
-
def fetch(arguments = {})
|
7
|
-
raise ArgumentError, "Any valid URL." unless arguments.has_key?(:url)
|
8
|
-
validation_arguments!(arguments)
|
9
|
-
|
10
|
-
@response_body = Awis::Connection.new.get(params)
|
11
|
-
self
|
12
|
-
end
|
13
|
-
|
14
6
|
def load_request_uri(arguments = {})
|
15
7
|
validation_arguments!(arguments)
|
16
8
|
|
@@ -19,6 +11,8 @@ module Awis
|
|
19
11
|
|
20
12
|
private
|
21
13
|
def validation_arguments!(arguments)
|
14
|
+
before_validation_arguments(arguments)
|
15
|
+
|
22
16
|
@arguments = arguments
|
23
17
|
@arguments[:response_group] = Array(arguments.fetch(:response_group, DEFAULT_RESPONSE_GROUP))
|
24
18
|
end
|
data/lib/awis/client.rb
CHANGED
@@ -1,6 +1,5 @@
|
|
1
1
|
module Awis
|
2
2
|
class Client
|
3
|
-
|
4
3
|
def initialize
|
5
4
|
raise CertificateError.new("Amazon access certificate is missing!") if Awis.config.access_key_id.nil? || Awis.config.secret_access_key.nil?
|
6
5
|
end
|
@@ -41,4 +40,4 @@ module Awis
|
|
41
40
|
end
|
42
41
|
end
|
43
42
|
end
|
44
|
-
end
|
43
|
+
end
|
data/lib/awis/connection.rb
CHANGED
@@ -26,7 +26,7 @@ module Awis
|
|
26
26
|
|
27
27
|
def get(params = {})
|
28
28
|
setup_params(params)
|
29
|
-
|
29
|
+
|
30
30
|
handle_response(request).body.force_encoding(Encoding::UTF_8)
|
31
31
|
end
|
32
32
|
|
@@ -49,7 +49,7 @@ module Awis
|
|
49
49
|
|
50
50
|
def request
|
51
51
|
showing_request_uri
|
52
|
-
|
52
|
+
|
53
53
|
Faraday.get(uri)
|
54
54
|
end
|
55
55
|
|
data/lib/awis/hash.rb
CHANGED
@@ -1,8 +1,4 @@
|
|
1
1
|
class Hash
|
2
|
-
def deep_find(key)
|
3
|
-
key?(key) ? self[key] : self.values.inject(nil) { |memo, v| memo ||= v.deep_find(key) if v.respond_to?(:deep_find) }
|
4
|
-
end
|
5
|
-
|
6
2
|
def array_slice_merge!(key, array, count)
|
7
3
|
self[key] = array.each_slice(count).collect { |e| e.reduce({}, :merge) }
|
8
4
|
end
|
data/lib/awis/models.rb
CHANGED
data/lib/awis/models/base.rb
CHANGED
@@ -10,7 +10,7 @@ module Awis
|
|
10
10
|
|
11
11
|
def setup_data!(response)
|
12
12
|
datas = []
|
13
|
-
|
13
|
+
|
14
14
|
response.each_node do |node, path|
|
15
15
|
text = node.inner_xml
|
16
16
|
text = text.to_i if text.to_i.to_s === text
|
@@ -26,15 +26,13 @@ module Awis
|
|
26
26
|
@site ||= text
|
27
27
|
elsif node.name == 'aws:Start'
|
28
28
|
@start ||= text
|
29
|
-
elsif node.name == 'aws:Rank'
|
30
|
-
@rank ||= text
|
31
29
|
elsif node.name == 'aws:Date' && path == "#{base_node_name}/aws:Date"
|
32
30
|
datas << { date: text }
|
33
31
|
elsif node.name == 'aws:PerMillion' && path == "#{base_node_name}/aws:PageViews/aws:PerMillion"
|
34
32
|
datas << { page_views_per_million: text }
|
35
33
|
elsif node.name == 'aws:PerUser' && path == "#{base_node_name}/aws:PageViews/aws:PerUser"
|
36
34
|
datas << { page_views_per_user: text }
|
37
|
-
elsif node.name == 'aws:
|
35
|
+
elsif node.name == 'aws:Rank' && path == "#{base_node_name}/aws:Rank"
|
38
36
|
datas << { rank: text }
|
39
37
|
elsif node.name == 'aws:PerMillion' && path == "#{base_node_name}/aws:Reach/aws:PerMillion"
|
40
38
|
datas << { reach_per_million: text }
|
data/lib/awis/models/url_info.rb
CHANGED
@@ -7,15 +7,15 @@ module Awis
|
|
7
7
|
@usage_statistics = []
|
8
8
|
@related_links = []
|
9
9
|
@categories = []
|
10
|
-
|
10
|
+
|
11
11
|
setup_data! loading_response(response)
|
12
12
|
end
|
13
13
|
|
14
14
|
def setup_data!(response)
|
15
|
-
content_data = {
|
15
|
+
content_data = {
|
16
16
|
owned_domains: []
|
17
17
|
}
|
18
|
-
contact_info = {
|
18
|
+
contact_info = {
|
19
19
|
phone_numbers: []
|
20
20
|
}
|
21
21
|
statistics = []
|
@@ -156,7 +156,7 @@ module Awis
|
|
156
156
|
end
|
157
157
|
|
158
158
|
class ContentData < BaseEntity
|
159
|
-
attr_accessor :data_url, :site_title, :site_description, :online_since, :speed_median_load_time, :speed_percentile, :adult_content,
|
159
|
+
attr_accessor :data_url, :site_title, :site_description, :online_since, :speed_median_load_time, :speed_percentile, :adult_content,
|
160
160
|
:language_locale, :links_in_count, :owned_domains
|
161
161
|
|
162
162
|
def initialize(options)
|
@@ -207,7 +207,7 @@ module Awis
|
|
207
207
|
end
|
208
208
|
|
209
209
|
class UsageStatistic < BaseEntity
|
210
|
-
attr_accessor :time_range_months, :time_range_days, :rank_value, :rank_delta, :reach_rank_value, :reach_rank_delta,
|
210
|
+
attr_accessor :time_range_months, :time_range_days, :rank_value, :rank_delta, :reach_rank_value, :reach_rank_delta,
|
211
211
|
:reach_per_million_value, :reach_per_million_delta, :reach_page_views_per_million_value, :reach_page_views_per_million_delta,
|
212
212
|
:reach_page_views_rank_value, :reach_page_views_rank_delta, :reach_page_views_per_user_value, :reach_page_views_per_user_delta
|
213
213
|
|
data/lib/awis/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: awis-sdk-ruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.7
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -167,7 +167,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
167
167
|
version: '0'
|
168
168
|
segments:
|
169
169
|
- 0
|
170
|
-
hash:
|
170
|
+
hash: 3226589619329212718
|
171
171
|
requirements: []
|
172
172
|
rubyforge_project:
|
173
173
|
rubygems_version: 1.8.23
|