alexa 0.2.2 → 0.3.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.
@@ -0,0 +1,14 @@
1
+ HTTP/1.1 200 OK
2
+ Server: Apache-Coyote/1.1
3
+ Content-Type: text/xml
4
+ Transfer-Encoding: chunked
5
+ Date: Wed, 12 Oct 2011 21:18:48 GMT
6
+
7
+ <?xml version="1.0"?>
8
+ <aws:UrlInfoResponse xmlns:aws="http://alexa.amazonaws.com/doc/2005-07-11/"><aws:Response xmlns:aws="http://awis.amazonaws.com/doc/2005-07-11"><aws:OperationRequest><aws:RequestId>b9574986-bda8-83e2-cc0b-41457a7168d0</aws:RequestId></aws:OperationRequest><aws:UrlInfoResult><aws:Alexa>
9
+
10
+ <aws:TrafficData>
11
+ <aws:DataUrl type="canonical">github.com/</aws:DataUrl>
12
+ <aws:Rank>551</aws:Rank>
13
+ </aws:TrafficData>
14
+ </aws:Alexa></aws:UrlInfoResult><aws:ResponseStatus xmlns:aws="http://alexa.amazonaws.com/doc/2005-07-11/"><aws:StatusCode>Success</aws:StatusCode></aws:ResponseStatus></aws:Response></aws:UrlInfoResponse>
@@ -0,0 +1,7 @@
1
+ HTTP/1.1 401 Unauthorized
2
+ Server: Apache-Coyote/1.1
3
+ Transfer-Encoding: chunked
4
+ Date: Tue, 11 Oct 2011 20:16:19 GMT
5
+
6
+ <?xml version="1.0"?>
7
+ <Response><Errors><Error><Code>AuthFailure</Code><Message>AWS was not able to authenticate the request: access credentials are missing</Message></Error></Errors><RequestID>57d5192f-803a-1d6f-a50a-c354840a02b9</RequestID></Response>
data/test/helper.rb CHANGED
@@ -1,11 +1,24 @@
1
- Bundler.setup
1
+ require "bundler/setup"
2
2
 
3
3
  require "minitest/autorun"
4
+ require "fakeweb"
4
5
  require "mocha"
5
6
 
6
7
  require "alexa"
7
8
 
8
- def fixture_file(filename)
9
- file_path = File.expand_path(File.dirname(__FILE__) + '/fixtures/' + filename)
10
- File.read(file_path)
9
+ if ENV["XML_PARSER"]
10
+ require ENV["XML_PARSER"] if ["nokogiri", "libxml", "ox"].include?(ENV["XML_PARSER"])
11
+ MultiXml.parser = ENV["XML_PARSER"]
12
+ end
13
+
14
+ class MiniTest::Unit::TestCase
15
+ def setup
16
+ FakeWeb.allow_net_connect = false
17
+ end
18
+
19
+ # Recording response is as simple as writing in terminal:
20
+ # curl -is "http://awis.amazonaws.com/?Action=UrlInfo&AWSAccessKeyId=fake" -X GET > response.txt
21
+ def fixture(filename)
22
+ File.read(File.join("test", "fixtures", filename))
23
+ end
11
24
  end
@@ -23,70 +23,74 @@ describe "Alexa::UlrInfo" do
23
23
  assert_equal "awis.amazonaws.com", @alexa.send(:url).host
24
24
  end
25
25
 
26
- describe "parsing xml returned by options LinksInCount,SiteData" do
26
+ describe "parsing xml returned by options Rank,LinksInCount,SiteData" do
27
27
  before do
28
+ FakeWeb.register_uri(:get, %r{http://awis.amazonaws.com}, :response => fixture("custom-response-group.txt"))
28
29
  @alexa.response_group = "Rank,LinksInCount,SiteData"
29
- xml = fixture_file('polsl_small.xml')
30
- @alexa.parse_xml(xml)
30
+ @alexa.connect
31
+ @alexa.parse_xml(@alexa.xml_response)
31
32
  end
32
33
 
33
34
  it "should return rank" do
34
- assert_equal 86020, @alexa.rank
35
+ assert_equal 493, @alexa.rank
35
36
  end
36
37
 
37
38
  it "should return data url" do
38
- assert_equal "polsl.pl/", @alexa.data_url
39
+ assert_equal "github.com/", @alexa.data_url
39
40
  end
40
41
 
41
42
  it "should return site title" do
42
- assert_equal "Silesian University of Technology", @alexa.site_title
43
+ assert_equal "GitHub", @alexa.site_title
43
44
  end
44
45
 
45
46
  it "should return site description" do
46
- assert_equal "About the university, studies, faculties and departments, photo gallery.", @alexa.site_description
47
+ expected = "Online project hosting using Git. Includes source-code browser, in-line editing, wikis, and ticketing. Free for public open-source code. Commercial closed source hosting is also available."
48
+ assert_equal expected, @alexa.site_description
47
49
  end
48
50
 
49
- it "should not crash" do
51
+ it "should not have other attributes" do
50
52
  assert_nil @alexa.language_locale
51
53
  end
52
54
  end
53
55
 
54
- describe "parsing xml with all options" do
56
+ describe "with github.com full response group" do
55
57
  before do
56
- xml = fixture_file('polsl.xml')
57
- @alexa.parse_xml(xml)
58
+ FakeWeb.register_uri(:get, %r{http://awis.amazonaws.com}, :response => fixture("github_full.txt"))
59
+ @alexa.connect
60
+ @alexa.parse_xml(@alexa.xml_response)
58
61
  end
59
62
 
60
63
  it "should return rank" do
61
- assert_equal 86020, @alexa.rank
64
+ assert_equal 551, @alexa.rank
62
65
  end
63
66
 
64
67
  it "should return data url" do
65
- assert_equal "polsl.pl", @alexa.data_url
68
+ assert_equal "github.com", @alexa.data_url
66
69
  end
67
70
 
68
71
  it "should return site title" do
69
- assert_equal "Silesian University of Technology", @alexa.site_title
72
+ assert_equal "GitHub", @alexa.site_title
70
73
  end
71
74
 
72
75
  it "should return site description" do
73
- assert_equal "About the university, studies, faculties and departments, photo gallery.", @alexa.site_description
76
+ expected = "Online project hosting using Git. Includes source-code browser, in-line editing, wikis, and ticketing. Free for public open-source code. Commercial closed source hosting is also available."
77
+ assert_equal expected, @alexa.site_description
74
78
  end
75
79
 
76
80
  it "should return language locale" do
77
- assert_equal "pl-PL", @alexa.language_locale
81
+ assert_nil @alexa.language_locale
78
82
  end
79
83
 
80
84
  it "should return language encoding" do
81
- assert_equal "iso-8859-2", @alexa.language_encoding
85
+ assert_nil @alexa.language_encoding
82
86
  end
83
87
 
84
88
  it "should return links in count" do
85
- assert_equal 281, @alexa.links_in_count
89
+ assert_equal 43819, @alexa.links_in_count
86
90
  end
87
91
 
88
92
  it "should return keywords" do
89
- assert_equal ["Polska", "Regionalne", "Gliwice"], @alexa.keywords
93
+ assert_nil @alexa.keywords
90
94
  end
91
95
 
92
96
  it "should return related links" do
@@ -94,19 +98,19 @@ describe "Alexa::UlrInfo" do
94
98
  end
95
99
 
96
100
  it "should return speed_median load time" do
97
- assert_equal 266, @alexa.speed_median_load_time
101
+ assert_equal 1031, @alexa.speed_median_load_time
98
102
  end
99
103
 
100
104
  it "should return speed percentile" do
101
- assert_equal 98, @alexa.speed_percentile
105
+ assert_equal 68, @alexa.speed_percentile
102
106
  end
103
107
 
104
108
  it "should return rank by country" do
105
- assert_equal 3, @alexa.rank_by_country.size
109
+ assert_equal 19, @alexa.rank_by_country.size
106
110
  end
107
111
 
108
112
  it "should return rank by city" do
109
- assert_equal 68, @alexa.rank_by_city.size
113
+ assert_equal 163, @alexa.rank_by_city.size
110
114
  end
111
115
 
112
116
  it "should return usage statistics" do
@@ -114,66 +118,29 @@ describe "Alexa::UlrInfo" do
114
118
  end
115
119
  end
116
120
 
117
- describe "parsing empty xml response" do
118
- before do
119
- xml = fixture_file('empty.xml')
120
- @alexa.parse_xml(xml)
121
- end
122
-
123
- it "should return nil from rank" do
124
- assert_nil @alexa.rank
125
- end
126
-
127
- it "should return nil from data_url" do
128
- assert_equal "404", @alexa.data_url
129
- end
130
-
131
- it "should return nil from site_title" do
132
- assert_equal "404", @alexa.site_title
133
- end
134
-
135
- it "should return nil from site_description" do
136
- assert_nil @alexa.site_description
137
- end
138
-
139
- it "should return nil from language_locale" do
140
- assert_nil @alexa.language_locale
141
- end
142
-
143
- it "should return nil from language_encoding" do
144
- assert_nil @alexa.language_encoding
145
- end
146
-
147
- it "should return nil from links_in_count" do
148
- assert_nil @alexa.links_in_count
149
- end
150
-
151
- it "should return nil from keywords" do
152
- assert_nil @alexa.keywords
153
- end
154
-
155
- it "should return nil from related_links" do
156
- assert_nil @alexa.related_links
157
- end
158
-
159
- it "should return nil from speed_median_load_time" do
160
- assert_nil @alexa.speed_median_load_time
161
- end
162
-
163
- it "should return nil from speed_percentile" do
164
- assert_nil @alexa.speed_percentile
165
- end
166
-
167
- it "should return nil from rank_by_country" do
168
- assert_nil @alexa.rank_by_country
121
+ describe "with github.com rank response group" do
122
+ it "should successfuly connect" do
123
+ FakeWeb.register_uri(:get, %r{http://awis.amazonaws.com}, :response => fixture("github_rank.txt"))
124
+ @alexa.response_group = "Rank"
125
+ @alexa.connect
126
+ @alexa.parse_xml(@alexa.xml_response)
127
+ assert_equal 551, @alexa.rank
169
128
  end
129
+ end
170
130
 
171
- it "should return nil from rank_by_city" do
172
- assert_nil @alexa.rank_by_city
131
+ describe "parsing xml with failure" do
132
+ it "should raise error when unathorized" do
133
+ FakeWeb.register_uri(:get, %r{http://awis.amazonaws.com}, :response => fixture("unathorized.txt"))
134
+ assert_raises StandardError do
135
+ @alexa.connect
136
+ end
173
137
  end
174
138
 
175
- it "should return nil from usage_statistics" do
176
- assert_nil @alexa.usage_statistics
139
+ it "should raise error when forbidden" do
140
+ FakeWeb.register_uri(:get, %r{http://awis.amazonaws.com}, :response => fixture("forbidden.txt"))
141
+ assert_raises StandardError do
142
+ @alexa.connect
143
+ end
177
144
  end
178
145
  end
179
146
  end
metadata CHANGED
@@ -1,53 +1,61 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: alexa
3
- version: !ruby/object:Gem::Version
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.3.0
4
5
  prerelease:
5
- version: 0.2.2
6
6
  platform: ruby
7
- authors:
8
- - "Wojciech Wn\xC4\x99trzak"
7
+ authors:
8
+ - Wojciech Wnętrzak
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
-
13
- date: 2011-06-22 00:00:00 Z
14
- dependencies:
15
- - !ruby/object:Gem::Dependency
16
- name: xml-simple
17
- requirement: &id001 !ruby/object:Gem::Requirement
12
+ date: 2011-12-11 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: multi_xml
16
+ requirement: &18737420 !ruby/object:Gem::Requirement
18
17
  none: false
19
- requirements:
20
- - - ">="
21
- - !ruby/object:Gem::Version
22
- version: "0"
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
23
22
  type: :runtime
24
23
  prerelease: false
25
- version_requirements: *id001
26
- - !ruby/object:Gem::Dependency
24
+ version_requirements: *18737420
25
+ - !ruby/object:Gem::Dependency
27
26
  name: mocha
28
- requirement: &id002 !ruby/object:Gem::Requirement
27
+ requirement: &18736900 !ruby/object:Gem::Requirement
29
28
  none: false
30
- requirements:
31
- - - ">="
32
- - !ruby/object:Gem::Version
33
- version: "0"
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
34
33
  type: :development
35
34
  prerelease: false
36
- version_requirements: *id002
35
+ version_requirements: *18736900
36
+ - !ruby/object:Gem::Dependency
37
+ name: fakeweb
38
+ requirement: &18735980 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ! '>='
42
+ - !ruby/object:Gem::Version
43
+ version: '0'
44
+ type: :development
45
+ prerelease: false
46
+ version_requirements: *18735980
37
47
  description: Alexa Web Information Service library (AWIS)
38
- email:
48
+ email:
39
49
  - w.wnetrzak@gmail.com
40
50
  executables: []
41
-
42
51
  extensions: []
43
-
44
52
  extra_rdoc_files: []
45
-
46
- files:
53
+ files:
47
54
  - .gitignore
55
+ - .travis.yml
48
56
  - Gemfile
49
57
  - LICENSE
50
- - README.markdown
58
+ - README.md
51
59
  - Rakefile
52
60
  - alexa.gemspec
53
61
  - lib/alexa.rb
@@ -55,43 +63,42 @@ files:
55
63
  - lib/alexa/url_info.rb
56
64
  - lib/alexa/version.rb
57
65
  - test/config_test.rb
58
- - test/fixtures/empty.xml
59
- - test/fixtures/polsl.xml
60
- - test/fixtures/polsl_small.xml
66
+ - test/fixtures/custom-response-group.txt
67
+ - test/fixtures/empty_group.txt
68
+ - test/fixtures/forbidden.txt
69
+ - test/fixtures/github_full.txt
70
+ - test/fixtures/github_rank.txt
71
+ - test/fixtures/unathorized.txt
61
72
  - test/helper.rb
62
73
  - test/url_info_test.rb
63
74
  homepage: https://github.com/morgoth/alexa
64
75
  licenses: []
65
-
66
76
  post_install_message:
67
77
  rdoc_options: []
68
-
69
- require_paths:
78
+ require_paths:
70
79
  - lib
71
- required_ruby_version: !ruby/object:Gem::Requirement
80
+ required_ruby_version: !ruby/object:Gem::Requirement
72
81
  none: false
73
- requirements:
74
- - - ">="
75
- - !ruby/object:Gem::Version
76
- hash: 3945594913730495291
77
- segments:
82
+ requirements:
83
+ - - ! '>='
84
+ - !ruby/object:Gem::Version
85
+ version: '0'
86
+ segments:
78
87
  - 0
79
- version: "0"
80
- required_rubygems_version: !ruby/object:Gem::Requirement
88
+ hash: -4342544955797275684
89
+ required_rubygems_version: !ruby/object:Gem::Requirement
81
90
  none: false
82
- requirements:
83
- - - ">="
84
- - !ruby/object:Gem::Version
85
- hash: 3945594913730495291
86
- segments:
91
+ requirements:
92
+ - - ! '>='
93
+ - !ruby/object:Gem::Version
94
+ version: '0'
95
+ segments:
87
96
  - 0
88
- version: "0"
97
+ hash: -4342544955797275684
89
98
  requirements: []
90
-
91
99
  rubyforge_project:
92
- rubygems_version: 1.8.5
100
+ rubygems_version: 1.8.10
93
101
  signing_key:
94
102
  specification_version: 3
95
103
  summary: Alexa Web Information Service library
96
104
  test_files: []
97
-
data/README.markdown DELETED
@@ -1,39 +0,0 @@
1
- # Alexa Web Information Service #
2
-
3
- ## Installation ##
4
-
5
- ```
6
- gem install alexa
7
- ```
8
-
9
- ## Usage ##
10
-
11
- ``` ruby
12
- Alexa.url_info(:access_key_id => "key", :secret_access_key => "secret", :host => "site.com")
13
-
14
- returns object with methods:
15
- :xml_response, :rank, :data_url, :site_title, :site_description, :language_locale, :language_encoding,
16
- :links_in_count, :keywords, :related_links, :speed_median_load_time, :speed_percentile,
17
- :rank_by_country, :rank_by_city, :usage_statistics
18
- ```
19
-
20
- NOTE: You can specify option `:response_group => "Rank,ContactInfo"` or any other valid group.
21
- See: [Docs](http://docs.amazonwebservices.com/AlexaWebInfoService/latest/)
22
- Default response group takes all the available options.
23
-
24
- You can set configuration in block like this:
25
-
26
- ``` ruby
27
- Alexa.config do |c|
28
- c.access_key_id = "key"
29
- c.secret_access_key = "secret"
30
- end
31
- ```
32
-
33
- ## Contributors ##
34
-
35
- * [rmoriz](https://github.com/rmoriz)
36
-
37
- ## Copyright ##
38
-
39
- Copyright (c) 2011 Wojciech Wnętrzak. See LICENSE for details.