alexa 0.1.1 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +1 -0
- data/alexa.gemspec +1 -0
- data/lib/alexa/config.rb +2 -2
- data/lib/alexa/url_info.rb +43 -41
- data/lib/alexa/version.rb +1 -1
- data/test/config_test.rb +24 -26
- data/test/helper.rb +3 -3
- data/test/url_info_test.rb +142 -149
- metadata +17 -19
- data/Gemfile.lock +0 -23
data/.gitignore
CHANGED
data/alexa.gemspec
CHANGED
data/lib/alexa/config.rb
CHANGED
data/lib/alexa/url_info.rb
CHANGED
@@ -1,55 +1,57 @@
|
|
1
1
|
module Alexa
|
2
2
|
class UrlInfo
|
3
|
+
API_VERSION = "2005-07-11"
|
3
4
|
RESPONSE_GROUP = "Rank,ContactInfo,AdultContent,Speed,Language,Keywords,OwnedDomains,LinksInCount,SiteData,RelatedLinks,RankByCountry,RankByCity,UsageStats"
|
5
|
+
|
4
6
|
attr_accessor :host, :response_group, :xml_response,
|
5
7
|
:rank, :data_url, :site_title, :site_description, :language_locale, :language_encoding,
|
6
8
|
:links_in_count, :keywords, :related_links, :speed_median_load_time, :speed_percentile,
|
7
9
|
:rank_by_country, :rank_by_city, :usage_statistics
|
8
10
|
|
9
11
|
def initialize(options = {})
|
10
|
-
Alexa.config.access_key_id = options
|
11
|
-
Alexa.config.secret_access_key = options
|
12
|
-
raise ArgumentError.new("
|
13
|
-
raise ArgumentError.new("
|
14
|
-
|
15
|
-
|
12
|
+
Alexa.config.access_key_id = options.fetch(:access_key_id, Alexa.config.access_key_id)
|
13
|
+
Alexa.config.secret_access_key = options.fetch(:secret_access_key, Alexa.config.secret_access_key)
|
14
|
+
raise ArgumentError.new("You must specify access_key_id") if Alexa.config.access_key_id.nil?
|
15
|
+
raise ArgumentError.new("You must specify secret_access_key") if Alexa.config.secret_access_key.nil?
|
16
|
+
self.host = options[:host] or raise ArgumentError.new("You must specify host")
|
17
|
+
self.response_group = options.fetch(:response_group, RESPONSE_GROUP)
|
16
18
|
end
|
17
19
|
|
18
20
|
def connect
|
19
|
-
action = "UrlInfo"
|
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)
|
23
21
|
response = Net::HTTP.start(url.host) do |http|
|
24
22
|
http.get url.request_uri
|
25
23
|
end
|
26
|
-
|
24
|
+
self.xml_response = handle_response(response).body
|
27
25
|
end
|
28
26
|
|
29
27
|
def parse_xml(xml)
|
30
28
|
xml = XmlSimple.xml_in(force_encoding(xml), 'ForceArray' => false)
|
31
29
|
group = response_group.split(',')
|
32
30
|
alexa = xml['Response']['UrlInfoResult']['Alexa']
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
31
|
+
self.rank = alexa['TrafficData']['Rank'].to_i if group.include?('Rank') and !alexa['TrafficData']['Rank'].empty?
|
32
|
+
self.data_url = alexa['TrafficData']['DataUrl']['content'] if group.include?('Rank')
|
33
|
+
self.rank_by_country = alexa['TrafficData']['RankByCountry']['Country'] if group.include?('RankByCountry')
|
34
|
+
self.rank_by_city = alexa['TrafficData']['RankByCity']['City'] if group.include?('RankByCity')
|
35
|
+
self.usage_statistics = alexa['TrafficData']['UsageStatistics']["UsageStatistic"] if group.include?('UsageStats') and !alexa['TrafficData']['UsageStatistics'].nil?
|
38
36
|
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
37
|
+
self.site_title = alexa['ContentData']['SiteData']['Title'] if group.include?('SiteData')
|
38
|
+
self.site_description = alexa['ContentData']['SiteData']['Description'] if group.include?('SiteData')
|
39
|
+
self.language_locale = alexa['ContentData']['Language']['Locale'] if group.include?('Language')
|
40
|
+
self.language_encoding = alexa['ContentData']['Language']['Encoding'] if group.include?('Language')
|
41
|
+
self.links_in_count = alexa['ContentData']['LinksInCount'].to_i if group.include?('LinksInCount') and !alexa['ContentData']['LinksInCount'].empty?
|
42
|
+
self.keywords = alexa['ContentData']['Keywords']['Keyword'] if group.include?('Keywords')
|
43
|
+
self.speed_median_load_time = alexa['ContentData']['Speed']['MedianLoadTime'].to_i if group.include?('Speed') and !alexa['ContentData']['Speed']['MedianLoadTime'].empty?
|
44
|
+
self.speed_percentile = alexa['ContentData']['Speed']['Percentile'].to_i if group.include?('Speed') and !alexa['ContentData']['Speed']['Percentile'].empty?
|
47
45
|
|
48
|
-
|
46
|
+
self.related_links = alexa['Related']['RelatedLinks']['RelatedLink'] if group.include?('RelatedLinks')
|
49
47
|
end
|
50
48
|
|
51
49
|
private
|
52
50
|
|
51
|
+
def timestamp
|
52
|
+
@timestamp ||= Time::now.utc.strftime("%Y-%m-%dT%H:%M:%S.000Z")
|
53
|
+
end
|
54
|
+
|
53
55
|
def force_encoding(xml)
|
54
56
|
if RUBY_VERSION >= '1.9'
|
55
57
|
xml.force_encoding(Encoding::UTF_8)
|
@@ -66,7 +68,7 @@ module Alexa
|
|
66
68
|
if response.body.nil?
|
67
69
|
raise StandardError.new(response)
|
68
70
|
else
|
69
|
-
|
71
|
+
self.xml_response = response.body
|
70
72
|
xml = XmlSimple.xml_in(response.body, 'ForceArray' => false)
|
71
73
|
message = xml['Errors']['Error']['Message']
|
72
74
|
raise StandardError.new(message)
|
@@ -76,22 +78,22 @@ module Alexa
|
|
76
78
|
end
|
77
79
|
end
|
78
80
|
|
79
|
-
def
|
80
|
-
Base64.encode64(
|
81
|
+
def signature
|
82
|
+
@signature ||= Base64.encode64(OpenSSL::HMAC.digest(OpenSSL::Digest::Digest.new("sha1"), Alexa.config.secret_access_key, "UrlInfo" + timestamp)).strip
|
81
83
|
end
|
82
84
|
|
83
|
-
def
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
85
|
+
def url
|
86
|
+
URI.parse("http://awis.amazonaws.com/?" +
|
87
|
+
{
|
88
|
+
"Action" => "UrlInfo",
|
89
|
+
"AWSAccessKeyId" => Alexa.config.access_key_id,
|
90
|
+
"Signature" => signature,
|
91
|
+
"Timestamp" => timestamp,
|
92
|
+
"ResponseGroup" => response_group,
|
93
|
+
"Url" => host,
|
94
|
+
"Version" => API_VERSION
|
95
|
+
}.map { |key, value| "#{key}=#{CGI::escape(value)}" }.sort.join("&")
|
96
|
+
)
|
95
97
|
end
|
96
98
|
end
|
97
|
-
end
|
99
|
+
end
|
data/lib/alexa/version.rb
CHANGED
data/test/config_test.rb
CHANGED
@@ -1,38 +1,36 @@
|
|
1
1
|
require 'helper'
|
2
2
|
|
3
3
|
class ConfigTest < Test::Unit::TestCase
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
end
|
4
|
+
def setup
|
5
|
+
# Config is singleton
|
6
|
+
Alexa.config.access_key_id = nil
|
7
|
+
Alexa.config.secret_access_key = nil
|
8
|
+
end
|
10
9
|
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
:secret_access_key =>
|
10
|
+
should "raise argumment error if access key id is not present" do
|
11
|
+
assert_raise ArgumentError do
|
12
|
+
Alexa::UrlInfo.new(
|
13
|
+
:secret_access_key => "qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDF",
|
15
14
|
:host => "some.host"
|
16
|
-
|
17
|
-
end
|
15
|
+
)
|
18
16
|
end
|
17
|
+
end
|
19
18
|
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
:access_key_id =>
|
19
|
+
should "raise argumment error if secret access key is not present" do
|
20
|
+
assert_raise ArgumentError do
|
21
|
+
Alexa::UrlInfo.new(
|
22
|
+
:access_key_id => "12345678901234567890",
|
24
23
|
:host => "some.host"
|
25
|
-
|
26
|
-
end
|
24
|
+
)
|
27
25
|
end
|
26
|
+
end
|
28
27
|
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
:access_key_id =>
|
33
|
-
:secret_access_key =>
|
34
|
-
|
35
|
-
end
|
28
|
+
should "raise argumment error if host is not present" do
|
29
|
+
assert_raise ArgumentError do
|
30
|
+
Alexa::UrlInfo.new(
|
31
|
+
:access_key_id => "12345678901234567890",
|
32
|
+
:secret_access_key => "qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDF"
|
33
|
+
)
|
36
34
|
end
|
37
35
|
end
|
38
|
-
end
|
36
|
+
end
|
data/test/helper.rb
CHANGED
@@ -1,14 +1,14 @@
|
|
1
|
-
Bundler.
|
1
|
+
Bundler.setup
|
2
2
|
require "test/unit"
|
3
|
+
require "mocha"
|
3
4
|
require "shoulda"
|
4
5
|
|
5
6
|
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
6
7
|
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
7
|
-
require
|
8
|
+
require "alexa"
|
8
9
|
|
9
10
|
class Test::Unit::TestCase
|
10
11
|
def fixture_file(filename)
|
11
|
-
return '' if filename == ''
|
12
12
|
file_path = File.expand_path(File.dirname(__FILE__) + '/fixtures/' + filename)
|
13
13
|
File.read(file_path)
|
14
14
|
end
|
data/test/url_info_test.rb
CHANGED
@@ -1,195 +1,188 @@
|
|
1
|
-
require
|
1
|
+
require "helper"
|
2
2
|
|
3
3
|
class UrlInfoTest < Test::Unit::TestCase
|
4
|
-
|
4
|
+
def setup
|
5
|
+
@alexa = Alexa::UrlInfo.new(
|
6
|
+
:access_key_id => "12345678901234567890",
|
7
|
+
:secret_access_key => "qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDF",
|
8
|
+
:host => "some.host"
|
9
|
+
)
|
10
|
+
end
|
11
|
+
|
12
|
+
should "Generate signature" do
|
13
|
+
@alexa.stubs(:timestamp).returns("2009-07-03T07:22:24.000Z")
|
14
|
+
assert_equal "I1mPdBy+flhhzqqUaamNq9gq190=", @alexa.send(:signature)
|
15
|
+
end
|
16
|
+
|
17
|
+
should "Generate url" do
|
18
|
+
@alexa.stubs(:timestamp).returns("2009-07-03T07:22:24.000Z")
|
19
|
+
@alexa.response_group = "Rank,ContactInfo,AdultContent,Speed,Language,Keywords,OwnedDomains,LinksInCount,SiteData,RelatedLinks"
|
20
|
+
@alexa.host = "heroku.com"
|
21
|
+
expected_uri = "/?AWSAccessKeyId=12345678901234567890&Action=UrlInfo&ResponseGroup=Rank%2CContactInfo%2CAdultContent%2CSpeed%2CLanguage%2CKeywords%2COwnedDomains%2CLinksInCount%2CSiteData%2CRelatedLinks&Signature=I1mPdBy%2BflhhzqqUaamNq9gq190%3D&Timestamp=2009-07-03T07%3A22%3A24.000Z&Url=heroku.com&Version=2005-07-11"
|
22
|
+
assert_equal expected_uri, @alexa.send(:url).request_uri
|
23
|
+
assert_equal "awis.amazonaws.com", @alexa.send(:url).host
|
24
|
+
end
|
25
|
+
|
26
|
+
context "should parse xml return by options LinksInCount,SiteData" do
|
5
27
|
setup do
|
6
|
-
@alexa =
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
)
|
11
|
-
end
|
12
|
-
|
13
|
-
should "Generate signature" do
|
14
|
-
signature = @alexa.send :generate_signature, Alexa.config.secret_access_key, "UrlInfo", '2009-07-03T07:22:24.000Z'
|
15
|
-
assert_equal "I1mPdBy+flhhzqqUaamNq9gq190=", signature
|
16
|
-
end
|
17
|
-
|
18
|
-
should "Generate url" do
|
19
|
-
url = @alexa.send(:generate_url,
|
20
|
-
"UrlInfo",
|
21
|
-
Alexa.config.access_key_id,
|
22
|
-
"I1mPdBy+flhhzqqUaamNq9gq190=",
|
23
|
-
'2009-07-03T07:22:24.000Z',
|
24
|
-
"Rank,ContactInfo,AdultContent,Speed,Language,Keywords,OwnedDomains,LinksInCount,SiteData,RelatedLinks",
|
25
|
-
"heroku.com"
|
26
|
-
)
|
27
|
-
expected_uri = "/?AWSAccessKeyId=12345678901234567890&Action=UrlInfo&ResponseGroup=Rank%2CContactInfo%2CAdultContent%2CSpeed%2CLanguage%2CKeywords%2COwnedDomains%2CLinksInCount%2CSiteData%2CRelatedLinks&Signature=I1mPdBy%2BflhhzqqUaamNq9gq190%3D&Timestamp=2009-07-03T07%3A22%3A24.000Z&Url=heroku.com"
|
28
|
-
assert_equal expected_uri, url.request_uri
|
29
|
-
assert_equal "awis.amazonaws.com", url.host
|
30
|
-
end
|
31
|
-
|
32
|
-
context "should parse xml return by options LinksInCount,SiteData and" do
|
33
|
-
setup do
|
34
|
-
@alexa.response_group = "Rank,LinksInCount,SiteData"
|
35
|
-
xml = fixture_file('polsl_small.xml')
|
36
|
-
@alexa.parse_xml(xml)
|
37
|
-
end
|
28
|
+
@alexa.response_group = "Rank,LinksInCount,SiteData"
|
29
|
+
xml = fixture_file('polsl_small.xml')
|
30
|
+
@alexa.parse_xml(xml)
|
31
|
+
end
|
38
32
|
|
39
|
-
|
40
|
-
|
41
|
-
|
33
|
+
should "return rank" do
|
34
|
+
assert_equal 86020, @alexa.rank
|
35
|
+
end
|
42
36
|
|
43
|
-
|
44
|
-
|
45
|
-
|
37
|
+
should "return data url" do
|
38
|
+
assert_equal "polsl.pl/", @alexa.data_url
|
39
|
+
end
|
46
40
|
|
47
|
-
|
48
|
-
|
49
|
-
|
41
|
+
should "return site title" do
|
42
|
+
assert_equal "Silesian University of Technology", @alexa.site_title
|
43
|
+
end
|
50
44
|
|
51
|
-
|
52
|
-
|
53
|
-
|
45
|
+
should "return site description" do
|
46
|
+
assert_equal "About the university, studies, faculties and departments, photo gallery.", @alexa.site_description
|
47
|
+
end
|
54
48
|
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
end
|
59
|
-
assert_nil @alexa.language_locale
|
49
|
+
should "not crash" do
|
50
|
+
assert_nothing_raised do
|
51
|
+
@alexa.language_locale
|
60
52
|
end
|
53
|
+
assert_nil @alexa.language_locale
|
61
54
|
end
|
55
|
+
end
|
62
56
|
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
57
|
+
context "should parse xml with all options" do
|
58
|
+
setup do
|
59
|
+
xml = fixture_file('polsl.xml')
|
60
|
+
@alexa.parse_xml(xml)
|
61
|
+
end
|
68
62
|
|
69
|
-
|
70
|
-
|
71
|
-
|
63
|
+
should "return rank" do
|
64
|
+
assert_equal 86020, @alexa.rank
|
65
|
+
end
|
72
66
|
|
73
|
-
|
74
|
-
|
75
|
-
|
67
|
+
should "return data url" do
|
68
|
+
assert_equal "polsl.pl", @alexa.data_url
|
69
|
+
end
|
76
70
|
|
77
|
-
|
78
|
-
|
79
|
-
|
71
|
+
should "return site title" do
|
72
|
+
assert_equal "Silesian University of Technology", @alexa.site_title
|
73
|
+
end
|
80
74
|
|
81
|
-
|
82
|
-
|
83
|
-
|
75
|
+
should "return site description" do
|
76
|
+
assert_equal "About the university, studies, faculties and departments, photo gallery.", @alexa.site_description
|
77
|
+
end
|
84
78
|
|
85
|
-
|
86
|
-
|
87
|
-
|
79
|
+
should "return language locale" do
|
80
|
+
assert_equal "pl-PL", @alexa.language_locale
|
81
|
+
end
|
88
82
|
|
89
|
-
|
90
|
-
|
91
|
-
|
83
|
+
should "return language encoding" do
|
84
|
+
assert_equal "iso-8859-2", @alexa.language_encoding
|
85
|
+
end
|
92
86
|
|
93
|
-
|
94
|
-
|
95
|
-
|
87
|
+
should "return links in count" do
|
88
|
+
assert_equal 281, @alexa.links_in_count
|
89
|
+
end
|
96
90
|
|
97
|
-
|
98
|
-
|
99
|
-
|
91
|
+
should "return keywords" do
|
92
|
+
assert_equal ["Polska", "Regionalne", "Gliwice"], @alexa.keywords
|
93
|
+
end
|
100
94
|
|
101
|
-
|
102
|
-
|
103
|
-
|
95
|
+
should "return related links" do
|
96
|
+
assert_equal 10, @alexa.related_links.size
|
97
|
+
end
|
104
98
|
|
105
|
-
|
106
|
-
|
107
|
-
|
99
|
+
should "return speed_median load time" do
|
100
|
+
assert_equal 266, @alexa.speed_median_load_time
|
101
|
+
end
|
108
102
|
|
109
|
-
|
110
|
-
|
111
|
-
|
103
|
+
should "return speed percentile" do
|
104
|
+
assert_equal 98, @alexa.speed_percentile
|
105
|
+
end
|
112
106
|
|
113
|
-
|
114
|
-
|
115
|
-
|
107
|
+
should "return rank by country" do
|
108
|
+
assert_equal 3, @alexa.rank_by_country.size
|
109
|
+
end
|
116
110
|
|
117
|
-
|
118
|
-
|
119
|
-
|
111
|
+
should "return rank by city" do
|
112
|
+
assert_equal 68, @alexa.rank_by_city.size
|
113
|
+
end
|
120
114
|
|
121
|
-
|
122
|
-
|
123
|
-
end
|
115
|
+
should "return usage statistics" do
|
116
|
+
assert_equal 4, @alexa.usage_statistics.size
|
124
117
|
end
|
118
|
+
end
|
125
119
|
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
120
|
+
context "should not crash when parsing empty xml response" do
|
121
|
+
setup do
|
122
|
+
xml = fixture_file('empty.xml')
|
123
|
+
@alexa.parse_xml(xml)
|
124
|
+
end
|
131
125
|
|
132
|
-
|
133
|
-
|
134
|
-
|
126
|
+
should "return nil from rank" do
|
127
|
+
assert_nil @alexa.rank
|
128
|
+
end
|
135
129
|
|
136
|
-
|
137
|
-
|
138
|
-
|
130
|
+
should "return nil from data_url" do
|
131
|
+
assert_equal "404", @alexa.data_url
|
132
|
+
end
|
139
133
|
|
140
|
-
|
141
|
-
|
142
|
-
|
134
|
+
should "return nil from site_title" do
|
135
|
+
assert_equal "404", @alexa.site_title
|
136
|
+
end
|
143
137
|
|
144
|
-
|
145
|
-
|
146
|
-
|
138
|
+
should "return nil from site_description" do
|
139
|
+
assert_nil @alexa.site_description
|
140
|
+
end
|
147
141
|
|
148
|
-
|
149
|
-
|
150
|
-
|
142
|
+
should "return nil from language_locale" do
|
143
|
+
assert_nil @alexa.language_locale
|
144
|
+
end
|
151
145
|
|
152
|
-
|
153
|
-
|
154
|
-
|
146
|
+
should "return nil from language_encoding" do
|
147
|
+
assert_nil @alexa.language_encoding
|
148
|
+
end
|
155
149
|
|
156
|
-
|
157
|
-
|
158
|
-
|
150
|
+
should "return nil from links_in_count" do
|
151
|
+
assert_nil @alexa.links_in_count
|
152
|
+
end
|
159
153
|
|
160
|
-
|
161
|
-
|
162
|
-
|
154
|
+
should "return nil from keywords" do
|
155
|
+
assert_nil @alexa.keywords
|
156
|
+
end
|
163
157
|
|
164
|
-
|
165
|
-
|
166
|
-
|
158
|
+
should "return nil from related_links" do
|
159
|
+
assert_nil @alexa.related_links
|
160
|
+
end
|
167
161
|
|
168
|
-
|
169
|
-
|
170
|
-
|
162
|
+
should "return nil from speed_median_load_time" do
|
163
|
+
assert_nil @alexa.speed_median_load_time
|
164
|
+
end
|
171
165
|
|
172
|
-
|
173
|
-
|
174
|
-
|
166
|
+
should "return nil from speed_percentile" do
|
167
|
+
assert_nil @alexa.speed_percentile
|
168
|
+
end
|
175
169
|
|
176
|
-
|
177
|
-
|
178
|
-
|
170
|
+
should "return nil from rank_by_country" do
|
171
|
+
assert_nil @alexa.rank_by_country
|
172
|
+
end
|
179
173
|
|
180
|
-
|
181
|
-
|
182
|
-
|
174
|
+
should "return nil from rank_by_city" do
|
175
|
+
assert_nil @alexa.rank_by_city
|
176
|
+
end
|
183
177
|
|
184
|
-
|
185
|
-
|
186
|
-
end
|
178
|
+
should "return nil from usage_statistics" do
|
179
|
+
assert_nil @alexa.usage_statistics
|
187
180
|
end
|
181
|
+
end
|
188
182
|
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
end
|
183
|
+
should "not raise error when response is OK" do
|
184
|
+
assert_nothing_raised do
|
185
|
+
@alexa.send :handle_response, Net::HTTPOK.new("1.1", "200", "OK")
|
193
186
|
end
|
194
187
|
end
|
195
188
|
end
|
metadata
CHANGED
@@ -1,12 +1,8 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: alexa
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
prerelease:
|
5
|
-
|
6
|
-
- 0
|
7
|
-
- 1
|
8
|
-
- 1
|
9
|
-
version: 0.1.1
|
4
|
+
prerelease:
|
5
|
+
version: 0.2.0
|
10
6
|
platform: ruby
|
11
7
|
authors:
|
12
8
|
- "Wojciech Wn\xC4\x99trzak"
|
@@ -14,8 +10,7 @@ autorequire:
|
|
14
10
|
bindir: bin
|
15
11
|
cert_chain: []
|
16
12
|
|
17
|
-
date:
|
18
|
-
default_executable:
|
13
|
+
date: 2011-05-04 00:00:00 Z
|
19
14
|
dependencies:
|
20
15
|
- !ruby/object:Gem::Dependency
|
21
16
|
name: xml-simple
|
@@ -24,8 +19,6 @@ dependencies:
|
|
24
19
|
requirements:
|
25
20
|
- - ">="
|
26
21
|
- !ruby/object:Gem::Version
|
27
|
-
segments:
|
28
|
-
- 0
|
29
22
|
version: "0"
|
30
23
|
type: :runtime
|
31
24
|
prerelease: false
|
@@ -37,8 +30,6 @@ dependencies:
|
|
37
30
|
requirements:
|
38
31
|
- - ">="
|
39
32
|
- !ruby/object:Gem::Version
|
40
|
-
segments:
|
41
|
-
- 0
|
42
33
|
version: "0"
|
43
34
|
type: :development
|
44
35
|
prerelease: false
|
@@ -50,12 +41,21 @@ dependencies:
|
|
50
41
|
requirements:
|
51
42
|
- - ">="
|
52
43
|
- !ruby/object:Gem::Version
|
53
|
-
segments:
|
54
|
-
- 0
|
55
44
|
version: "0"
|
56
45
|
type: :development
|
57
46
|
prerelease: false
|
58
47
|
version_requirements: *id003
|
48
|
+
- !ruby/object:Gem::Dependency
|
49
|
+
name: mocha
|
50
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
51
|
+
none: false
|
52
|
+
requirements:
|
53
|
+
- - ">="
|
54
|
+
- !ruby/object:Gem::Version
|
55
|
+
version: "0"
|
56
|
+
type: :development
|
57
|
+
prerelease: false
|
58
|
+
version_requirements: *id004
|
59
59
|
description: Alexa Web Information Service library (AWIS)
|
60
60
|
email:
|
61
61
|
- w.wnetrzak@gmail.com
|
@@ -68,7 +68,6 @@ extra_rdoc_files: []
|
|
68
68
|
files:
|
69
69
|
- .gitignore
|
70
70
|
- Gemfile
|
71
|
-
- Gemfile.lock
|
72
71
|
- LICENSE
|
73
72
|
- README.rdoc
|
74
73
|
- Rakefile
|
@@ -83,7 +82,6 @@ files:
|
|
83
82
|
- test/fixtures/polsl_small.xml
|
84
83
|
- test/helper.rb
|
85
84
|
- test/url_info_test.rb
|
86
|
-
has_rdoc: true
|
87
85
|
homepage: https://github.com/morgoth/alexa
|
88
86
|
licenses: []
|
89
87
|
|
@@ -97,7 +95,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
97
95
|
requirements:
|
98
96
|
- - ">="
|
99
97
|
- !ruby/object:Gem::Version
|
100
|
-
hash:
|
98
|
+
hash: -201747439707847299
|
101
99
|
segments:
|
102
100
|
- 0
|
103
101
|
version: "0"
|
@@ -106,14 +104,14 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
106
104
|
requirements:
|
107
105
|
- - ">="
|
108
106
|
- !ruby/object:Gem::Version
|
109
|
-
hash:
|
107
|
+
hash: -201747439707847299
|
110
108
|
segments:
|
111
109
|
- 0
|
112
110
|
version: "0"
|
113
111
|
requirements: []
|
114
112
|
|
115
113
|
rubyforge_project: alexa
|
116
|
-
rubygems_version: 1.
|
114
|
+
rubygems_version: 1.7.2
|
117
115
|
signing_key:
|
118
116
|
specification_version: 3
|
119
117
|
summary: Alexa Web Information Service library
|
data/Gemfile.lock
DELETED
@@ -1,23 +0,0 @@
|
|
1
|
-
PATH
|
2
|
-
remote: .
|
3
|
-
specs:
|
4
|
-
alexa (0.1.1)
|
5
|
-
xml-simple
|
6
|
-
|
7
|
-
GEM
|
8
|
-
remote: http://rubygems.org/
|
9
|
-
specs:
|
10
|
-
rake (0.8.7)
|
11
|
-
shoulda (2.11.3)
|
12
|
-
test-unit (2.1.1)
|
13
|
-
xml-simple (1.0.12)
|
14
|
-
|
15
|
-
PLATFORMS
|
16
|
-
ruby
|
17
|
-
|
18
|
-
DEPENDENCIES
|
19
|
-
alexa!
|
20
|
-
rake
|
21
|
-
shoulda
|
22
|
-
test-unit
|
23
|
-
xml-simple
|