morgoth-alexa 0.0.3 → 0.0.4

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.
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