traffic 0.0.4 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -13,6 +13,8 @@ Usage Examples
13
13
 
14
14
  info = Traffic.from(:file_index)
15
15
 
16
+ info = Traffic.from(:file_index, File.read("/tmp/archive.xml"))
17
+
16
18
  puts info.count
17
19
  #=> 15
18
20
  puts "#{info.size} km"
@@ -6,6 +6,10 @@ module Traffic
6
6
  class Anwb
7
7
  HTML_FEED = "http://flitsapp.nl/ios/anwb/"
8
8
 
9
+ def initialize(archived_data=nil)
10
+ @data = Nokogiri::HTML::Document.parse(archived_data) if archived_data
11
+ end
12
+
9
13
  def traffic
10
14
  !(count_info[0].text =~ /Totaal aantal meldingen: 0/)
11
15
  end
@@ -5,6 +5,10 @@ module Traffic
5
5
  class FileIndex
6
6
  RSS_FEED = "http://www.fileindex.nl/rss.php"
7
7
 
8
+ def initialize(archived_data=nil)
9
+ @data = Feedzirra::Feed.parse(archived_data) if archived_data
10
+ end
11
+
8
12
  def traffic
9
13
  !(rss.description =~ /Er zijn geen files./)
10
14
  end
@@ -30,7 +34,7 @@ module Traffic
30
34
  item.to = data[3]
31
35
  item.length = data[4].to_f
32
36
 
33
- data = entry.summary.match /\b(.+)\b tussen \b(.+)\b( door (.*))? HMP([\d\.]+) .+ HMP([\d\.]+)\s*(.*)/
37
+ data = entry.summary.match /(.+) tussen (.+?)( door (.+))? HMP([\d\.]+) .+ HMP([\d\.]+)\s*(.*)/
34
38
  if data.nil?
35
39
  item.description = entry.summary
36
40
  else
@@ -1,3 +1,3 @@
1
1
  module Traffic
2
- VERSION = "0.0.4"
2
+ VERSION = "0.0.5"
3
3
  end
data/lib/traffic.rb CHANGED
@@ -3,8 +3,8 @@ require File.expand_path("../traffic/provider", __FILE__)
3
3
  require File.expand_path("../traffic/info", __FILE__)
4
4
 
5
5
  module Traffic
6
- def self.from(provider_name)
7
- provider = Provider(provider_name).new
6
+ def self.from(provider_name, archived_data=nil)
7
+ provider = Provider(provider_name).new(archived_data)
8
8
  info = Info.new
9
9
 
10
10
  MAIN_ATTRIBUTES.each do |attr|
@@ -0,0 +1,3 @@
1
+
2
+ <rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/"><channel><title>Fileindex.nl actuele files 25-jan-2012 11:34:26</title><link>http://www.fileindex.nl/meldingenRSS.aspx</link><description>Er is 1 file met een totale lengte van km.</description><language>en-us</language><item><title>A58 van Vlissingen richting Bergen op Zoom 0 km
3
+ </title><description>Afgesloten tussen 's-Gravenpolder en Rilland door Veiligheidsincident HMP144.7 --&gt; HMP144.7</description></item></channel></rss>
@@ -14,6 +14,20 @@ describe Traffic do
14
14
  HTTPClient.any_instance.stubs(:get).returns(stub)
15
15
  end
16
16
 
17
+ context "with data from archive" do
18
+ it "should not connect to the page to fetch data" do
19
+ lambda { Traffic.from(:anwb, File.read(File.expand_path("../../fixtures/anwb/traffic.html", __FILE__))) }.should_not raise_error
20
+ end
21
+
22
+ it "should be able to parse the archived data" do
23
+ info = Traffic.from(:anwb, File.read(File.expand_path("../../fixtures/anwb/traffic.html", __FILE__)))
24
+ info.traffic.should be_true
25
+ info.timestamp.strftime("%H:%M").should == "17:50"
26
+ info.items.first.description.should == "A1 Amersfoort richting Amsterdam tussen Amersfoort-Noord en Eembrugge 2 km, Filelengte neemt toe"
27
+ info.items.first.length.should == 2.0
28
+ end
29
+ end
30
+
17
31
  context "when there is no traffic" do
18
32
  before :each do
19
33
  stub_html "anwb/empty.html"
@@ -13,6 +13,20 @@ describe Traffic do
13
13
  Feedzirra::Feed.stubs(:fetch_and_parse).returns(stub)
14
14
  end
15
15
 
16
+ context "with data from archive" do
17
+ it "should not connect to the feed to fetch data" do
18
+ lambda { Traffic.from(:file_index, File.read(File.expand_path("../../fixtures/file_index/rss.xml", __FILE__))) }.should_not raise_error
19
+ end
20
+
21
+ it "should be able to parse the archived data" do
22
+ info = Traffic.from(:file_index, File.read(File.expand_path("../../fixtures/file_index/rss.xml", __FILE__)))
23
+ info.traffic.should be_true
24
+ info.timestamp.strftime("%H:%M").should == "17:51"
25
+ info.items.first.description.should == "Langzaam rijdend verkeer"
26
+ info.items.first.length.should == 2.2
27
+ end
28
+ end
29
+
16
30
  context "when there is no traffic" do
17
31
  before :each do
18
32
  stub_feed "file_index/empty_rss.xml"
@@ -31,6 +45,19 @@ describe Traffic do
31
45
  info_item.description.should == "weird description"
32
46
  end
33
47
 
48
+ it "should be able to handle an in apostrophe in the descriptions" do
49
+ stub_feed "file_index/apostrophe_in_description.xml"
50
+ info = Traffic.from(:file_index)
51
+ info_item = info.items.first
52
+ info_item.location.should == "'s-Gravenpolder en Rilland"
53
+ info_item.description.should == "Afgesloten"
54
+ info_item.cause.should == "Veiligheidsincident"
55
+ info_item.from.should == "Vlissingen"
56
+ info_item.to.should == "Bergen op Zoom"
57
+ info_item.from_location.should == 144.7
58
+ info_item.to_location.should == 144.7
59
+ end
60
+
34
61
  context "when there is traffic" do
35
62
  before :each do
36
63
  stub_feed "file_index/rss.xml"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: traffic
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.5
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-01-25 00:00:00.000000000 Z
12
+ date: 2012-06-01 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
16
- requirement: &70318563874100 !ruby/object:Gem::Requirement
16
+ requirement: &70103555463260 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '1.0'
22
22
  type: :development
23
23
  prerelease: false
24
- version_requirements: *70318563874100
24
+ version_requirements: *70103555463260
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: rake
27
- requirement: &70318563873240 !ruby/object:Gem::Requirement
27
+ requirement: &70103555462260 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ~>
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0.9'
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *70318563873240
35
+ version_requirements: *70103555462260
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: rspec
38
- requirement: &70318563871960 !ruby/object:Gem::Requirement
38
+ requirement: &70103555461220 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ~>
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '2.7'
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *70318563871960
46
+ version_requirements: *70103555461220
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: mocha
49
- requirement: &70318563871440 !ruby/object:Gem::Requirement
49
+ requirement: &70103555460020 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ~>
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: '0.10'
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *70318563871440
57
+ version_requirements: *70103555460020
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: simplecov
60
- requirement: &70318563870880 !ruby/object:Gem::Requirement
60
+ requirement: &70103555459520 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ~>
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: '0.5'
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *70318563870880
68
+ version_requirements: *70103555459520
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: fakeweb
71
- requirement: &70318563870240 !ruby/object:Gem::Requirement
71
+ requirement: &70103555458980 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ~>
@@ -76,10 +76,10 @@ dependencies:
76
76
  version: '1.3'
77
77
  type: :development
78
78
  prerelease: false
79
- version_requirements: *70318563870240
79
+ version_requirements: *70103555458980
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: feedzirra
82
- requirement: &70318563869440 !ruby/object:Gem::Requirement
82
+ requirement: &70103555458360 !ruby/object:Gem::Requirement
83
83
  none: false
84
84
  requirements:
85
85
  - - ~>
@@ -87,10 +87,10 @@ dependencies:
87
87
  version: '0.1'
88
88
  type: :runtime
89
89
  prerelease: false
90
- version_requirements: *70318563869440
90
+ version_requirements: *70103555458360
91
91
  - !ruby/object:Gem::Dependency
92
92
  name: activesupport
93
- requirement: &70318563893980 !ruby/object:Gem::Requirement
93
+ requirement: &70103555457400 !ruby/object:Gem::Requirement
94
94
  none: false
95
95
  requirements:
96
96
  - - =
@@ -98,10 +98,10 @@ dependencies:
98
98
  version: 3.1.3
99
99
  type: :runtime
100
100
  prerelease: false
101
- version_requirements: *70318563893980
101
+ version_requirements: *70103555457400
102
102
  - !ruby/object:Gem::Dependency
103
103
  name: httpclient
104
- requirement: &70318563893400 !ruby/object:Gem::Requirement
104
+ requirement: &70103555479980 !ruby/object:Gem::Requirement
105
105
  none: false
106
106
  requirements:
107
107
  - - ~>
@@ -109,10 +109,10 @@ dependencies:
109
109
  version: '2.2'
110
110
  type: :runtime
111
111
  prerelease: false
112
- version_requirements: *70318563893400
112
+ version_requirements: *70103555479980
113
113
  - !ruby/object:Gem::Dependency
114
114
  name: nokogiri
115
- requirement: &70318563892820 !ruby/object:Gem::Requirement
115
+ requirement: &70103555479280 !ruby/object:Gem::Requirement
116
116
  none: false
117
117
  requirements:
118
118
  - - ~>
@@ -120,7 +120,7 @@ dependencies:
120
120
  version: '1.4'
121
121
  type: :runtime
122
122
  prerelease: false
123
- version_requirements: *70318563892820
123
+ version_requirements: *70103555479280
124
124
  description: Traffic is a gem that supplies traffic information from multiple data
125
125
  providers
126
126
  email:
@@ -142,6 +142,7 @@ files:
142
142
  - lib/traffic/version.rb
143
143
  - spec/fixtures/anwb/empty.html
144
144
  - spec/fixtures/anwb/traffic.html
145
+ - spec/fixtures/file_index/apostrophe_in_description.xml
145
146
  - spec/fixtures/file_index/empty_rss.xml
146
147
  - spec/fixtures/file_index/rss.xml
147
148
  - spec/fixtures/file_index/weird_description.xml
@@ -179,6 +180,7 @@ summary: ! 'Traffic: the traffic information gem'
179
180
  test_files:
180
181
  - spec/fixtures/anwb/empty.html
181
182
  - spec/fixtures/anwb/traffic.html
183
+ - spec/fixtures/file_index/apostrophe_in_description.xml
182
184
  - spec/fixtures/file_index/empty_rss.xml
183
185
  - spec/fixtures/file_index/rss.xml
184
186
  - spec/fixtures/file_index/weird_description.xml