alexa 0.2.2 → 0.3.0

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