traffic 0.0.4 → 0.0.5
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/README.md +2 -0
- data/lib/traffic/providers/anwb.rb +4 -0
- data/lib/traffic/providers/file_index.rb +5 -1
- data/lib/traffic/version.rb +1 -1
- data/lib/traffic.rb +2 -2
- data/spec/fixtures/file_index/apostrophe_in_description.xml +3 -0
- data/spec/providers/anwb_spec.rb +14 -0
- data/spec/providers/file_index_spec.rb +27 -0
- metadata +24 -22
data/README.md
CHANGED
@@ -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
|
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
|
data/lib/traffic/version.rb
CHANGED
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 --> HMP144.7</description></item></channel></rss>
|
data/spec/providers/anwb_spec.rb
CHANGED
@@ -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
|
+
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
|
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: &
|
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: *
|
24
|
+
version_requirements: *70103555463260
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: rake
|
27
|
-
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: *
|
35
|
+
version_requirements: *70103555462260
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: rspec
|
38
|
-
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: *
|
46
|
+
version_requirements: *70103555461220
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: mocha
|
49
|
-
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: *
|
57
|
+
version_requirements: *70103555460020
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: simplecov
|
60
|
-
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: *
|
68
|
+
version_requirements: *70103555459520
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: fakeweb
|
71
|
-
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: *
|
79
|
+
version_requirements: *70103555458980
|
80
80
|
- !ruby/object:Gem::Dependency
|
81
81
|
name: feedzirra
|
82
|
-
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: *
|
90
|
+
version_requirements: *70103555458360
|
91
91
|
- !ruby/object:Gem::Dependency
|
92
92
|
name: activesupport
|
93
|
-
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: *
|
101
|
+
version_requirements: *70103555457400
|
102
102
|
- !ruby/object:Gem::Dependency
|
103
103
|
name: httpclient
|
104
|
-
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: *
|
112
|
+
version_requirements: *70103555479980
|
113
113
|
- !ruby/object:Gem::Dependency
|
114
114
|
name: nokogiri
|
115
|
-
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: *
|
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
|