alexa 0.0.7 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|