morgoth-alexa 0.0.1 → 0.0.2
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/VERSION +1 -1
- data/alexa.gemspec +2 -1
- data/lib/alexa/url_info.rb +21 -17
- data/test/alexa_test.rb +57 -3
- data/test/fixtures/polsl_small.xml +16 -0
- metadata +2 -1
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.2
|
data/alexa.gemspec
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = %q{alexa}
|
5
|
-
s.version = "0.0.
|
5
|
+
s.version = "0.0.2"
|
6
6
|
|
7
7
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
8
8
|
s.authors = ["Wojciech Wnętrzak"]
|
@@ -24,6 +24,7 @@ Gem::Specification.new do |s|
|
|
24
24
|
"lib/alexa/url_info.rb",
|
25
25
|
"test/alexa_test.rb",
|
26
26
|
"test/fixtures/polsl.xml",
|
27
|
+
"test/fixtures/polsl_small.xml",
|
27
28
|
"test/test_helper.rb"
|
28
29
|
]
|
29
30
|
s.homepage = %q{http://github.com/morgoth/alexa}
|
data/lib/alexa/url_info.rb
CHANGED
@@ -7,9 +7,9 @@ module Alexa
|
|
7
7
|
:rank_by_country, :rank_by_city, :usage_statistics
|
8
8
|
|
9
9
|
def initialize(options = {} )
|
10
|
-
@access_key_id = options[:access_key_id]
|
11
|
-
@secret_access_key = options[:secret_access_key]
|
12
|
-
@host = options[:host]
|
10
|
+
@access_key_id = options[:access_key_id] or raise ArgumentError.new("you must specify acces_key_id")
|
11
|
+
@secret_access_key = options[:secret_access_key] or raise ArgumentError.new("you must specify secret_acces_key")
|
12
|
+
@host = options[:host] or raise ArgumentError.new("you must specify host")
|
13
13
|
@response_group = options[:response_group] || RESPONSE_GROUP
|
14
14
|
end
|
15
15
|
|
@@ -23,20 +23,24 @@ module Alexa
|
|
23
23
|
|
24
24
|
def parse_xml(xml)
|
25
25
|
xml = XmlSimple.xml_in(xml.force_encoding(Encoding::UTF_8), 'ForceArray' => false)
|
26
|
-
|
27
|
-
|
28
|
-
@
|
29
|
-
@
|
30
|
-
@
|
31
|
-
@
|
32
|
-
@
|
33
|
-
|
34
|
-
@
|
35
|
-
@
|
36
|
-
@
|
37
|
-
@
|
38
|
-
@
|
39
|
-
@
|
26
|
+
group = response_group.split(',')
|
27
|
+
alexa = xml['Response']['UrlInfoResult']['Alexa']
|
28
|
+
@rank = alexa['TrafficData']['Rank'].to_i if group.include?('Rank')
|
29
|
+
@data_url = alexa['TrafficData']['DataUrl']['content'] if group.include?('Rank')
|
30
|
+
@rank_by_country = alexa['TrafficData']['RankByCountry']['Country'] if group.include?('RankByCountry')
|
31
|
+
@rank_by_city = alexa['TrafficData']['RankByCity']['City'] if group.include?('RankByCity')
|
32
|
+
@usage_statistics = alexa['TrafficData']['UsageStatistics']["UsageStatistic"]if group.include?('UsageStats')
|
33
|
+
|
34
|
+
@site_title = alexa['ContentData']['SiteData']['Title'] if group.include?('SiteData')
|
35
|
+
@site_description = alexa['ContentData']['SiteData']['Description'] if group.include?('SiteData')
|
36
|
+
@language_locale = alexa['ContentData']['Language']['Locale'] if group.include?('Language')
|
37
|
+
@language_encoding = alexa['ContentData']['Language']['Encoding'] if group.include?('Language')
|
38
|
+
@links_in_count = alexa['ContentData']['LinksInCount'].to_i if group.include?('LinksInCount')
|
39
|
+
@keywords = alexa['ContentData']['Keywords']['Keyword'] if group.include?('Keywords')
|
40
|
+
@speed_median_load_time = alexa['ContentData']['Speed']['MedianLoadTime'].to_i if group.include?('Speed')
|
41
|
+
@speed_percentile = alexa['ContentData']['Speed']['Percentile'].to_i if group.include?('Speed')
|
42
|
+
|
43
|
+
@related_links = alexa['Related']['RelatedLinks']['RelatedLink'] if group.include?('RelatedLinks')
|
40
44
|
end
|
41
45
|
|
42
46
|
private
|
data/test/alexa_test.rb
CHANGED
@@ -29,10 +29,41 @@ class AlexaTest < Test::Unit::TestCase
|
|
29
29
|
assert_equal "awis.amazonaws.com", url.host
|
30
30
|
end
|
31
31
|
|
32
|
-
context "should parse xml and" do
|
32
|
+
context "should parse xml return by options LinksInCount,SiteData and" do
|
33
33
|
setup do
|
34
|
-
@
|
35
|
-
|
34
|
+
@alexa.response_group = "Rank,LinksInCount,SiteData"
|
35
|
+
xml = fixture_file('polsl_small.xml')
|
36
|
+
@alexa.parse_xml(xml)
|
37
|
+
end
|
38
|
+
|
39
|
+
should "return rank" do
|
40
|
+
assert_equal 86020, @alexa.rank
|
41
|
+
end
|
42
|
+
|
43
|
+
should "return data url" do
|
44
|
+
assert_equal "polsl.pl/", @alexa.data_url
|
45
|
+
end
|
46
|
+
|
47
|
+
should "return site title" do
|
48
|
+
assert_equal "Silesian University of Technology", @alexa.site_title
|
49
|
+
end
|
50
|
+
|
51
|
+
should "return site description" do
|
52
|
+
assert_equal "About the university, studies, faculties and departments, photo gallery.", @alexa.site_description
|
53
|
+
end
|
54
|
+
|
55
|
+
should "not crush" do
|
56
|
+
assert_nothing_raised do
|
57
|
+
@alexa.language_locale
|
58
|
+
end
|
59
|
+
assert_nil @alexa.language_locale
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
context "should parse xml with all options and" do
|
64
|
+
setup do
|
65
|
+
xml = fixture_file('polsl.xml')
|
66
|
+
@alexa.parse_xml(xml)
|
36
67
|
end
|
37
68
|
|
38
69
|
should "return rank" do
|
@@ -93,4 +124,27 @@ class AlexaTest < Test::Unit::TestCase
|
|
93
124
|
|
94
125
|
end
|
95
126
|
end
|
127
|
+
|
128
|
+
should "Raise argumment error if keys or host are not present" do
|
129
|
+
assert_raise ArgumentError, do
|
130
|
+
Alexa::UrlInfo.new(
|
131
|
+
:secret_access_key => "qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDF",
|
132
|
+
:host => "some.host"
|
133
|
+
)
|
134
|
+
end
|
135
|
+
|
136
|
+
assert_raise ArgumentError, do
|
137
|
+
Alexa::UrlInfo.new(
|
138
|
+
:access_key_id => "12345678901234567890",
|
139
|
+
:host => "some.host"
|
140
|
+
)
|
141
|
+
end
|
142
|
+
|
143
|
+
assert_raise ArgumentError, do
|
144
|
+
Alexa::UrlInfo.new(
|
145
|
+
:access_key_id => "12345678901234567890",
|
146
|
+
:secret_access_key => "qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDF",
|
147
|
+
)
|
148
|
+
end
|
149
|
+
end
|
96
150
|
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
<?xml version="1.0"?>
|
2
|
+
<aws:UrlInfoResponse xmlns:aws="http://alexa.amazonaws.com/doc/2005-10-05/"><aws:Response xmlns:aws="http://awis.amazonaws.com/doc/2005-07-11"><aws:OperationRequest><aws:RequestId>ce456f7b-b273-482e-8533-9442718b8002</aws:RequestId></aws:OperationRequest><aws:UrlInfoResult><aws:Alexa>
|
3
|
+
|
4
|
+
<aws:ContentData>
|
5
|
+
<aws:DataUrl type="canonical">polsl.pl/</aws:DataUrl>
|
6
|
+
<aws:SiteData>
|
7
|
+
<aws:Title>Silesian University of Technology</aws:Title>
|
8
|
+
<aws:Description>About the university, studies, faculties and departments, photo gallery.</aws:Description>
|
9
|
+
</aws:SiteData>
|
10
|
+
<aws:LinksInCount>281</aws:LinksInCount>
|
11
|
+
</aws:ContentData>
|
12
|
+
<aws:TrafficData>
|
13
|
+
<aws:DataUrl type="canonical">polsl.pl/</aws:DataUrl>
|
14
|
+
<aws:Rank>86020</aws:Rank>
|
15
|
+
</aws:TrafficData>
|
16
|
+
</aws:Alexa></aws:UrlInfoResult><aws:ResponseStatus xmlns:aws="http://alexa.amazonaws.com/doc/2005-10-05/"><aws:StatusCode>Success</aws:StatusCode></aws:ResponseStatus></aws:Response></aws:UrlInfoResponse>
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: morgoth-alexa
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- "Wojciech Wn\xC4\x99trzak"
|
@@ -43,6 +43,7 @@ files:
|
|
43
43
|
- lib/alexa/url_info.rb
|
44
44
|
- test/alexa_test.rb
|
45
45
|
- test/fixtures/polsl.xml
|
46
|
+
- test/fixtures/polsl_small.xml
|
46
47
|
- test/test_helper.rb
|
47
48
|
has_rdoc: false
|
48
49
|
homepage: http://github.com/morgoth/alexa
|