alexa 0.0.7 → 0.1.0
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.rdoc +7 -4
- data/VERSION +1 -1
- data/alexa.gemspec +8 -5
- data/lib/alexa.rb +1 -0
- data/lib/alexa/config.rb +15 -0
- data/lib/alexa/url_info.rb +10 -8
- data/test/config_test.rb +38 -0
- data/test/test_helper.rb +0 -3
- data/test/{alexa_test.rb → url_info_test.rb} +3 -26
- metadata +7 -4
data/README.rdoc
CHANGED
|
@@ -11,11 +11,14 @@
|
|
|
11
11
|
:links_in_count, :keywords, :related_links, :speed_median_load_time, :speed_percentile,
|
|
12
12
|
:rank_by_country, :rank_by_city, :usage_statistics
|
|
13
13
|
|
|
14
|
+
You can set configuration in block like this:
|
|
15
|
+
Alexa.config do |c|
|
|
16
|
+
c.access_key_id = "key"
|
|
17
|
+
c.secret_access_key = "secret"
|
|
18
|
+
end
|
|
19
|
+
|
|
14
20
|
== Installation
|
|
15
|
-
|
|
16
|
-
gem install morgoth-alexa
|
|
17
|
-
<b>actual</b>
|
|
18
|
-
gem install alexa --source http://gemcutter.org
|
|
21
|
+
gem install alexa
|
|
19
22
|
|
|
20
23
|
== Contributors
|
|
21
24
|
* rmoriz[http://github.com/rmoriz]
|
data/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
0.0
|
|
1
|
+
0.1.0
|
data/alexa.gemspec
CHANGED
|
@@ -5,11 +5,11 @@
|
|
|
5
5
|
|
|
6
6
|
Gem::Specification.new do |s|
|
|
7
7
|
s.name = %q{alexa}
|
|
8
|
-
s.version = "0.0
|
|
8
|
+
s.version = "0.1.0"
|
|
9
9
|
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
|
11
11
|
s.authors = ["Wojciech Wnętrzak"]
|
|
12
|
-
s.date = %q{
|
|
12
|
+
s.date = %q{2010-01-28}
|
|
13
13
|
s.description = %q{Alexa Web Information Service library (AWIS)}
|
|
14
14
|
s.email = %q{w.wnetrzak@gmail.com}
|
|
15
15
|
s.extra_rdoc_files = [
|
|
@@ -25,12 +25,14 @@ Gem::Specification.new do |s|
|
|
|
25
25
|
"VERSION",
|
|
26
26
|
"alexa.gemspec",
|
|
27
27
|
"lib/alexa.rb",
|
|
28
|
+
"lib/alexa/config.rb",
|
|
28
29
|
"lib/alexa/url_info.rb",
|
|
29
|
-
"test/
|
|
30
|
+
"test/config_test.rb",
|
|
30
31
|
"test/fixtures/empty.xml",
|
|
31
32
|
"test/fixtures/polsl.xml",
|
|
32
33
|
"test/fixtures/polsl_small.xml",
|
|
33
|
-
"test/test_helper.rb"
|
|
34
|
+
"test/test_helper.rb",
|
|
35
|
+
"test/url_info_test.rb"
|
|
34
36
|
]
|
|
35
37
|
s.homepage = %q{http://github.com/morgoth/alexa}
|
|
36
38
|
s.rdoc_options = ["--charset=UTF-8"]
|
|
@@ -38,7 +40,8 @@ Gem::Specification.new do |s|
|
|
|
38
40
|
s.rubygems_version = %q{1.3.5}
|
|
39
41
|
s.summary = %q{Alexa Web Information Service library}
|
|
40
42
|
s.test_files = [
|
|
41
|
-
"test/
|
|
43
|
+
"test/url_info_test.rb",
|
|
44
|
+
"test/config_test.rb",
|
|
42
45
|
"test/test_helper.rb"
|
|
43
46
|
]
|
|
44
47
|
|
data/lib/alexa.rb
CHANGED
data/lib/alexa/config.rb
ADDED
data/lib/alexa/url_info.rb
CHANGED
|
@@ -1,23 +1,25 @@
|
|
|
1
1
|
module Alexa
|
|
2
2
|
class UrlInfo
|
|
3
3
|
RESPONSE_GROUP = "Rank,ContactInfo,AdultContent,Speed,Language,Keywords,OwnedDomains,LinksInCount,SiteData,RelatedLinks,RankByCountry,RankByCity,UsageStats"
|
|
4
|
-
attr_accessor :
|
|
4
|
+
attr_accessor :host, :response_group, :xml_response,
|
|
5
5
|
:rank, :data_url, :site_title, :site_description, :language_locale, :language_encoding,
|
|
6
6
|
:links_in_count, :keywords, :related_links, :speed_median_load_time, :speed_percentile,
|
|
7
7
|
:rank_by_country, :rank_by_city, :usage_statistics
|
|
8
8
|
|
|
9
|
-
def initialize(options = {}
|
|
10
|
-
|
|
11
|
-
|
|
9
|
+
def initialize(options = {})
|
|
10
|
+
Alexa.config.access_key_id = options[:access_key_id] || Alexa.config.access_key_id
|
|
11
|
+
Alexa.config.secret_access_key = options[:secret_access_key] || Alexa.config.secret_access_key
|
|
12
|
+
raise ArgumentError.new("you must specify access_key_id") if Alexa.config.access_key_id.nil?
|
|
13
|
+
raise ArgumentError.new("you must specify secret_access_key") if Alexa.config.secret_access_key.nil?
|
|
12
14
|
@host = options[:host] or raise ArgumentError.new("you must specify host")
|
|
13
15
|
@response_group = options[:response_group] || RESPONSE_GROUP
|
|
14
16
|
end
|
|
15
17
|
|
|
16
18
|
def connect
|
|
17
19
|
action = "UrlInfo"
|
|
18
|
-
timestamp =
|
|
19
|
-
signature = generate_signature(secret_access_key, action, timestamp)
|
|
20
|
-
url = generate_url(action, access_key_id, signature, timestamp, response_group, host)
|
|
20
|
+
timestamp = Time::now.utc.strftime("%Y-%m-%dT%H:%M:%S.000Z")
|
|
21
|
+
signature = generate_signature(Alexa.config.secret_access_key, action, timestamp)
|
|
22
|
+
url = generate_url(action, Alexa.config.access_key_id, signature, timestamp, response_group, host)
|
|
21
23
|
response = Net::HTTP.start(url.host) do |http|
|
|
22
24
|
http.get url.request_uri
|
|
23
25
|
end
|
|
@@ -74,7 +76,7 @@ module Alexa
|
|
|
74
76
|
end
|
|
75
77
|
end
|
|
76
78
|
|
|
77
|
-
def generate_signature(
|
|
79
|
+
def generate_signature(secret_access_key, action, timestamp)
|
|
78
80
|
Base64.encode64( OpenSSL::HMAC.digest( OpenSSL::Digest::Digest.new( "sha1" ), secret_access_key, action + timestamp)).strip
|
|
79
81
|
end
|
|
80
82
|
|
data/test/config_test.rb
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
class ConfigTest < Test::Unit::TestCase
|
|
4
|
+
context "Config test" do
|
|
5
|
+
setup do
|
|
6
|
+
# Config is singleton
|
|
7
|
+
Alexa.config.access_key_id = nil
|
|
8
|
+
Alexa.config.secret_access_key = nil
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
should "raise argumment error if access key id is not present" do
|
|
12
|
+
assert_raise ArgumentError do
|
|
13
|
+
Alexa::UrlInfo.new(
|
|
14
|
+
:secret_access_key => "qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDF",
|
|
15
|
+
:host => "some.host"
|
|
16
|
+
)
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
should "raise argumment error if secret access key is not present" do
|
|
21
|
+
assert_raise ArgumentError do
|
|
22
|
+
Alexa::UrlInfo.new(
|
|
23
|
+
:access_key_id => "12345678901234567890",
|
|
24
|
+
:host => "some.host"
|
|
25
|
+
)
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
should "raise argumment error if host is not present" do
|
|
30
|
+
assert_raise ArgumentError do
|
|
31
|
+
Alexa::UrlInfo.new(
|
|
32
|
+
:access_key_id => "12345678901234567890",
|
|
33
|
+
:secret_access_key => "qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDF"
|
|
34
|
+
)
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
end
|
data/test/test_helper.rb
CHANGED
|
@@ -6,9 +6,6 @@ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
|
|
6
6
|
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
|
7
7
|
require 'alexa'
|
|
8
8
|
|
|
9
|
-
class Test::Unit::TestCase
|
|
10
|
-
end
|
|
11
|
-
|
|
12
9
|
def fixture_file(filename)
|
|
13
10
|
return '' if filename == ''
|
|
14
11
|
file_path = File.expand_path(File.dirname(__FILE__) + '/fixtures/' + filename)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
require 'test_helper'
|
|
2
2
|
|
|
3
|
-
class
|
|
3
|
+
class UrlInfoTest < Test::Unit::TestCase
|
|
4
4
|
context "Alexa::UrlInfo" do
|
|
5
5
|
setup do
|
|
6
6
|
@alexa = Alexa::UrlInfo.new(
|
|
@@ -11,14 +11,14 @@ class AlexaTest < Test::Unit::TestCase
|
|
|
11
11
|
end
|
|
12
12
|
|
|
13
13
|
should "Generate signature" do
|
|
14
|
-
signature = @alexa.send :generate_signature,
|
|
14
|
+
signature = @alexa.send :generate_signature, Alexa.config.secret_access_key, "UrlInfo", '2009-07-03T07:22:24.000Z'
|
|
15
15
|
assert_equal "I1mPdBy+flhhzqqUaamNq9gq190=", signature
|
|
16
16
|
end
|
|
17
17
|
|
|
18
18
|
should "Generate url" do
|
|
19
19
|
url = @alexa.send(:generate_url,
|
|
20
20
|
"UrlInfo",
|
|
21
|
-
|
|
21
|
+
Alexa.config.access_key_id,
|
|
22
22
|
"I1mPdBy+flhhzqqUaamNq9gq190=",
|
|
23
23
|
'2009-07-03T07:22:24.000Z',
|
|
24
24
|
"Rank,ContactInfo,AdultContent,Speed,Language,Keywords,OwnedDomains,LinksInCount,SiteData,RelatedLinks",
|
|
@@ -192,27 +192,4 @@ class AlexaTest < Test::Unit::TestCase
|
|
|
192
192
|
end
|
|
193
193
|
end
|
|
194
194
|
end
|
|
195
|
-
|
|
196
|
-
should "Raise argumment error if keys or host are not present" do
|
|
197
|
-
assert_raise ArgumentError do
|
|
198
|
-
Alexa::UrlInfo.new(
|
|
199
|
-
:secret_access_key => "qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDF",
|
|
200
|
-
:host => "some.host"
|
|
201
|
-
)
|
|
202
|
-
end
|
|
203
|
-
|
|
204
|
-
assert_raise ArgumentError do
|
|
205
|
-
Alexa::UrlInfo.new(
|
|
206
|
-
:access_key_id => "12345678901234567890",
|
|
207
|
-
:host => "some.host"
|
|
208
|
-
)
|
|
209
|
-
end
|
|
210
|
-
|
|
211
|
-
assert_raise ArgumentError do
|
|
212
|
-
Alexa::UrlInfo.new(
|
|
213
|
-
:access_key_id => "12345678901234567890",
|
|
214
|
-
:secret_access_key => "qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDF"
|
|
215
|
-
)
|
|
216
|
-
end
|
|
217
|
-
end
|
|
218
195
|
end
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: alexa
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.0
|
|
4
|
+
version: 0.1.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- "Wojciech Wn\xC4\x99trzak"
|
|
@@ -9,7 +9,7 @@ autorequire:
|
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
11
|
|
|
12
|
-
date:
|
|
12
|
+
date: 2010-01-28 00:00:00 +01:00
|
|
13
13
|
default_executable:
|
|
14
14
|
dependencies:
|
|
15
15
|
- !ruby/object:Gem::Dependency
|
|
@@ -40,12 +40,14 @@ files:
|
|
|
40
40
|
- VERSION
|
|
41
41
|
- alexa.gemspec
|
|
42
42
|
- lib/alexa.rb
|
|
43
|
+
- lib/alexa/config.rb
|
|
43
44
|
- lib/alexa/url_info.rb
|
|
44
|
-
- test/
|
|
45
|
+
- test/config_test.rb
|
|
45
46
|
- test/fixtures/empty.xml
|
|
46
47
|
- test/fixtures/polsl.xml
|
|
47
48
|
- test/fixtures/polsl_small.xml
|
|
48
49
|
- test/test_helper.rb
|
|
50
|
+
- test/url_info_test.rb
|
|
49
51
|
has_rdoc: true
|
|
50
52
|
homepage: http://github.com/morgoth/alexa
|
|
51
53
|
licenses: []
|
|
@@ -75,5 +77,6 @@ signing_key:
|
|
|
75
77
|
specification_version: 3
|
|
76
78
|
summary: Alexa Web Information Service library
|
|
77
79
|
test_files:
|
|
78
|
-
- test/
|
|
80
|
+
- test/url_info_test.rb
|
|
81
|
+
- test/config_test.rb
|
|
79
82
|
- test/test_helper.rb
|