morgoth-alexa 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.3
1
+ 0.0.4
data/alexa.gemspec CHANGED
@@ -2,11 +2,11 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = %q{alexa}
5
- s.version = "0.0.3"
5
+ s.version = "0.0.4"
6
6
 
7
7
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
8
8
  s.authors = ["Wojciech Wnętrzak"]
9
- s.date = %q{2009-07-06}
9
+ s.date = %q{2009-07-07}
10
10
  s.email = %q{w.wnetrzak@gmail.com}
11
11
  s.extra_rdoc_files = [
12
12
  "LICENSE",
@@ -23,6 +23,7 @@ Gem::Specification.new do |s|
23
23
  "lib/alexa.rb",
24
24
  "lib/alexa/url_info.rb",
25
25
  "test/alexa_test.rb",
26
+ "test/fixtures/empty.xml",
26
27
  "test/fixtures/polsl.xml",
27
28
  "test/fixtures/polsl_small.xml",
28
29
  "test/test_helper.rb"
@@ -28,20 +28,20 @@ module Alexa
28
28
  xml = XmlSimple.xml_in(xml.force_encoding(Encoding::UTF_8), 'ForceArray' => false)
29
29
  group = response_group.split(',')
30
30
  alexa = xml['Response']['UrlInfoResult']['Alexa']
31
- @rank = alexa['TrafficData']['Rank'].to_i if group.include?('Rank')
31
+ @rank = alexa['TrafficData']['Rank'].to_i if group.include?('Rank') and !alexa['TrafficData']['Rank'].empty?
32
32
  @data_url = alexa['TrafficData']['DataUrl']['content'] if group.include?('Rank')
33
33
  @rank_by_country = alexa['TrafficData']['RankByCountry']['Country'] if group.include?('RankByCountry')
34
34
  @rank_by_city = alexa['TrafficData']['RankByCity']['City'] if group.include?('RankByCity')
35
- @usage_statistics = alexa['TrafficData']['UsageStatistics']["UsageStatistic"]if group.include?('UsageStats')
35
+ @usage_statistics = alexa['TrafficData']['UsageStatistics']["UsageStatistic"] if group.include?('UsageStats') and !alexa['TrafficData']['UsageStatistics'].nil?
36
36
 
37
37
  @site_title = alexa['ContentData']['SiteData']['Title'] if group.include?('SiteData')
38
38
  @site_description = alexa['ContentData']['SiteData']['Description'] if group.include?('SiteData')
39
39
  @language_locale = alexa['ContentData']['Language']['Locale'] if group.include?('Language')
40
40
  @language_encoding = alexa['ContentData']['Language']['Encoding'] if group.include?('Language')
41
- @links_in_count = alexa['ContentData']['LinksInCount'].to_i if group.include?('LinksInCount')
41
+ @links_in_count = alexa['ContentData']['LinksInCount'].to_i if group.include?('LinksInCount') and !alexa['ContentData']['LinksInCount'].empty?
42
42
  @keywords = alexa['ContentData']['Keywords']['Keyword'] if group.include?('Keywords')
43
- @speed_median_load_time = alexa['ContentData']['Speed']['MedianLoadTime'].to_i if group.include?('Speed')
44
- @speed_percentile = alexa['ContentData']['Speed']['Percentile'].to_i if group.include?('Speed')
43
+ @speed_median_load_time = alexa['ContentData']['Speed']['MedianLoadTime'].to_i if group.include?('Speed') and !alexa['ContentData']['Speed']['MedianLoadTime'].empty?
44
+ @speed_percentile = alexa['ContentData']['Speed']['Percentile'].to_i if group.include?('Speed') and !alexa['ContentData']['Speed']['Percentile'].empty?
45
45
 
46
46
  @related_links = alexa['Related']['RelatedLinks']['RelatedLink'] if group.include?('RelatedLinks')
47
47
  end
data/test/alexa_test.rb CHANGED
@@ -52,7 +52,7 @@ class AlexaTest < Test::Unit::TestCase
52
52
  assert_equal "About the university, studies, faculties and departments, photo gallery.", @alexa.site_description
53
53
  end
54
54
 
55
- should "not crush" do
55
+ should "not crash" do
56
56
  assert_nothing_raised do
57
57
  @alexa.language_locale
58
58
  end
@@ -124,6 +124,70 @@ class AlexaTest < Test::Unit::TestCase
124
124
 
125
125
  end
126
126
 
127
+ context "should not crash when parsing empty xml response and" do
128
+ setup do
129
+ xml = fixture_file('empty.xml')
130
+ @alexa.parse_xml(xml)
131
+ end
132
+
133
+ should "return nil" do
134
+ assert_nil @alexa.rank
135
+ end
136
+
137
+ should "return nil" do
138
+ assert_nil @alexa.data_url
139
+ end
140
+
141
+ should "return nil" do
142
+ assert_nil @alexa.site_title
143
+ end
144
+
145
+ should "return nil" do
146
+ assert_nil @alexa.site_description
147
+ end
148
+
149
+ should "return nil" do
150
+ assert_nil @alexa.language_locale
151
+ end
152
+
153
+ should "return nil" do
154
+ assert_nil @alexa.language_encoding
155
+ end
156
+
157
+ should "return nil" do
158
+ assert_nil @alexa.links_in_count
159
+ end
160
+
161
+ should "return nil" do
162
+ assert_nil @alexa.keywords
163
+ end
164
+
165
+ should "return nil" do
166
+ assert_nil @alexa.related_links
167
+ end
168
+
169
+ should "return nil" do
170
+ assert_nil @alexa.speed_median_load_time
171
+ end
172
+
173
+ should "return nil" do
174
+ assert_nil @alexa.speed_percentile
175
+ end
176
+
177
+ should "return nil" do
178
+ assert_nil @alexa.rank_by_country
179
+ end
180
+
181
+ should "return nil" do
182
+ assert_nil @alexa.rank_by_city
183
+ end
184
+
185
+ should "return nil" do
186
+ assert_nil @alexa.usage_statistics
187
+ end
188
+
189
+ end
190
+
127
191
  should "not raise error when response is OK" do
128
192
  assert_nothing_raised do
129
193
  @alexa.send :handle_response, Net::HTTPOK.new("1.1", "200", "OK")
@@ -0,0 +1,39 @@
1
+ <?xml version="1.0"?>
2
+ <aws:UrlInfoResponse xmlns:aws="http://alexa.amazonaws.com/doc/2005-10-05/"><aws:Response xmlns:aws="http://awis.amazonaws.com/doc/2005-07-11"><aws:OperationRequest><aws:RequestId>6a12c8f4-056f-4fce-95cd-2f9d2a353236</aws:RequestId></aws:OperationRequest><aws:UrlInfoResult><aws:Alexa>
3
+
4
+ <aws:ContactInfo>
5
+ <aws:DataUrl type="canonical">404</aws:DataUrl>
6
+ <aws:PhoneNumbers>
7
+ <aws:PhoneNumber/>
8
+ </aws:PhoneNumbers>
9
+ <aws:OwnerName/>
10
+ <aws:Email/>
11
+ <aws:PhysicalAddress/>
12
+ <aws:CompanyStockTicker/>
13
+ </aws:ContactInfo>
14
+ <aws:ContentData>
15
+ <aws:DataUrl type="canonical">404</aws:DataUrl>
16
+ <aws:SiteData>
17
+ <aws:Title>404</aws:Title>
18
+ </aws:SiteData>
19
+ <aws:Speed>
20
+ <aws:MedianLoadTime/>
21
+ <aws:Percentile/>
22
+ </aws:Speed>
23
+ <aws:AdultContent/>
24
+ <aws:Language/>
25
+ <aws:LinksInCount/>
26
+ <aws:Keywords/>
27
+ <aws:OwnedDomains/>
28
+ </aws:ContentData>
29
+ <aws:Related>
30
+ <aws:DataUrl type="canonical">404</aws:DataUrl>
31
+ <aws:RelatedLinks/>
32
+ </aws:Related>
33
+ <aws:TrafficData>
34
+ <aws:DataUrl type="canonical">404</aws:DataUrl>
35
+ <aws:Rank/>
36
+ <aws:RankByCountry/>
37
+ <aws:RankByCity/>
38
+ </aws:TrafficData>
39
+ </aws:Alexa></aws:UrlInfoResult><aws:ResponseStatus xmlns:aws="http://alexa.amazonaws.com/doc/2005-10-05/"><aws:StatusCode>Success</aws:StatusCode></aws:ResponseStatus></aws:Response></aws:UrlInfoResponse>
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: morgoth-alexa
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
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: 2009-07-06 00:00:00 -07:00
12
+ date: 2009-07-07 00:00:00 -07:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -42,6 +42,7 @@ files:
42
42
  - lib/alexa.rb
43
43
  - lib/alexa/url_info.rb
44
44
  - test/alexa_test.rb
45
+ - test/fixtures/empty.xml
45
46
  - test/fixtures/polsl.xml
46
47
  - test/fixtures/polsl_small.xml
47
48
  - test/test_helper.rb