ns-yapi 0.3.0 → 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile.lock +2 -2
- data/lib/ns_client.rb +7 -2
- data/ns.gemspec +1 -1
- data/spec/fixtures/stations_list_with_invalid_new_lines.xml +40 -0
- data/spec/ns_client_spec.rb +42 -25
- metadata +6 -4
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
ns-yapi (0.
|
4
|
+
ns-yapi (0.4.0)
|
5
5
|
httpclient
|
6
6
|
nokogiri
|
7
7
|
nori
|
@@ -26,7 +26,7 @@ GEM
|
|
26
26
|
mini_portile (0.5.0)
|
27
27
|
mocha (0.14.0)
|
28
28
|
metaclass (~> 0.0.1)
|
29
|
-
multi_json (1.7.
|
29
|
+
multi_json (1.7.7)
|
30
30
|
nokogiri (1.6.0)
|
31
31
|
mini_portile (~> 0.5.0)
|
32
32
|
nori (2.2.0)
|
data/lib/ns_client.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
#encoding: utf-8
|
1
2
|
require 'pathname'
|
2
3
|
require 'time'
|
3
4
|
require 'nori'
|
@@ -158,7 +159,11 @@ class NSClient
|
|
158
159
|
|
159
160
|
def get_xml(url)
|
160
161
|
response = @client.get url
|
161
|
-
Nokogiri.XML(response.content)
|
162
|
+
Nokogiri.XML(remove_unwanted_whitespace(response.content))
|
163
|
+
end
|
164
|
+
|
165
|
+
def remove_unwanted_whitespace content
|
166
|
+
content.gsub /<(\s+?)/, '<'
|
162
167
|
end
|
163
168
|
|
164
169
|
def disruption_url(query)
|
@@ -206,4 +211,4 @@ class NSClient
|
|
206
211
|
class MissingParameter < StandardError
|
207
212
|
end
|
208
213
|
|
209
|
-
end
|
214
|
+
end
|
data/ns.gemspec
CHANGED
@@ -4,7 +4,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
4
4
|
|
5
5
|
Gem::Specification.new do |gem|
|
6
6
|
gem.name = "ns-yapi"
|
7
|
-
gem.version = '0.
|
7
|
+
gem.version = '0.4.0'
|
8
8
|
gem.authors = ["Stefan Hendriks"]
|
9
9
|
gem.email = ["stefanhen83@gmail.com"]
|
10
10
|
gem.description = %q{Yet Another (Ruby) NS API client}
|
@@ -0,0 +1,40 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<Stations>
|
3
|
+
|
4
|
+
<Station>
|
5
|
+
<Code>LC</Code>
|
6
|
+
<Type>stoptreinstation</Type>
|
7
|
+
<Namen>
|
8
|
+
<Kort>Lochem</Kort>
|
9
|
+
<
|
10
|
+
Middel>Lochem</Middel>
|
11
|
+
<Lang>Lochem</Lang>
|
12
|
+
</Namen>
|
13
|
+
<Land>NL</Land>
|
14
|
+
<UICCode>8400399</UICCode>
|
15
|
+
<Lat>52.166668</Lat>
|
16
|
+
<Lon>6.4263887</Lon>
|
17
|
+
<Synoniemen>
|
18
|
+
|
19
|
+
</Synoniemen>
|
20
|
+
</Station>
|
21
|
+
|
22
|
+
<Station>
|
23
|
+
<Code>HT</Code>
|
24
|
+
<Type>intercitystation</Type>
|
25
|
+
<Namen>
|
26
|
+
<Kort>Den Bosch</Kort>
|
27
|
+
<Middel>'s-Hertogenbosch</Middel>
|
28
|
+
<Lang>'s-Hertogenbosch</Lang>
|
29
|
+
</Namen>
|
30
|
+
<Land>NL</Land>
|
31
|
+
<UICCode>12</UICCode>
|
32
|
+
<Lat>52.166668</Lat>
|
33
|
+
<Lon>6.4263887</Lon>
|
34
|
+
<Synoniemen>
|
35
|
+
|
36
|
+
</Synoniemen>
|
37
|
+
</Station>
|
38
|
+
|
39
|
+
|
40
|
+
</Stations>
|
data/spec/ns_client_spec.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
#encoding: utf-8
|
1
2
|
require 'spec_helper'
|
2
3
|
|
3
4
|
describe NSClient do
|
@@ -8,36 +9,52 @@ describe NSClient do
|
|
8
9
|
|
9
10
|
context "Stations" do
|
10
11
|
|
11
|
-
|
12
|
-
stub_ns_client_request "http://username:password@webservices.ns.nl/ns-api-stations-v2", load_fixture('stations.xml')
|
13
|
-
end
|
12
|
+
context "with valid xml" do
|
14
13
|
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
end
|
14
|
+
before :each do
|
15
|
+
stub_ns_client_request "http://username:password@webservices.ns.nl/ns-api-stations-v2", load_fixture('stations.xml')
|
16
|
+
end
|
19
17
|
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
18
|
+
it "should return all stations" do
|
19
|
+
stations = @client.stations
|
20
|
+
stations.size.should == 620
|
21
|
+
end
|
22
|
+
|
23
|
+
it "should return expected first station from list" do
|
24
|
+
stations = @client.stations
|
25
|
+
first_station = stations.first
|
26
|
+
first_station.class.should == NSClient::Station
|
27
|
+
first_station.type.should == "knooppuntIntercitystation"
|
28
|
+
first_station.code.should == "HT"
|
29
|
+
first_station.short_name.should == "H'bosch"
|
30
|
+
first_station.name.should == "'s-Hertogenbosch"
|
31
|
+
first_station.long_name.should == "'s-Hertogenbosch"
|
32
|
+
first_station.country.should == "NL"
|
33
|
+
first_station.uiccode.should == "8400319"
|
34
|
+
first_station.lat.should == "51.69048"
|
35
|
+
first_station.long.should == "5.29362"
|
36
|
+
end
|
37
|
+
|
38
|
+
it "should retrieve a convenient hash with usable station names and codes for prices usage" do
|
39
|
+
stations = @client.stations_short
|
40
|
+
stations.size.should == 620
|
41
|
+
stations["HT"].should == ["'s-Hertogenbosch", "NL"]
|
42
|
+
end
|
34
43
|
|
35
|
-
it "should retrieve a convenient hash with usable station names and codes for prices usage" do
|
36
|
-
stations = @client.stations_short
|
37
|
-
stations.size.should == 620
|
38
|
-
stations["HT"].should == ["'s-Hertogenbosch", "NL"]
|
39
44
|
end
|
40
45
|
|
46
|
+
describe "invalid stations xml" do
|
47
|
+
|
48
|
+
before :each do
|
49
|
+
stub_ns_client_request "http://username:password@webservices.ns.nl/ns-api-stations-v2", load_fixture('stations_list_with_invalid_new_lines.xml')
|
50
|
+
end
|
51
|
+
|
52
|
+
it "should return all stations" do
|
53
|
+
stations = @client.stations
|
54
|
+
stations.size.should == 2
|
55
|
+
end
|
56
|
+
|
57
|
+
end
|
41
58
|
|
42
59
|
end
|
43
60
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ns-yapi
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-
|
12
|
+
date: 2013-08-05 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: httpclient
|
@@ -84,6 +84,7 @@ files:
|
|
84
84
|
- spec/fixtures/prices.xml
|
85
85
|
- spec/fixtures/prices_invalid_station_name.xml
|
86
86
|
- spec/fixtures/stations.xml
|
87
|
+
- spec/fixtures/stations_list_with_invalid_new_lines.xml
|
87
88
|
- spec/model/prices_url_spec.rb
|
88
89
|
- spec/ns_client_spec.rb
|
89
90
|
- spec/nsyapi_spec.rb
|
@@ -102,7 +103,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
102
103
|
version: '0'
|
103
104
|
segments:
|
104
105
|
- 0
|
105
|
-
hash: -
|
106
|
+
hash: -1576565984611129262
|
106
107
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
107
108
|
none: false
|
108
109
|
requirements:
|
@@ -111,7 +112,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
111
112
|
version: '0'
|
112
113
|
segments:
|
113
114
|
- 0
|
114
|
-
hash: -
|
115
|
+
hash: -1576565984611129262
|
115
116
|
requirements: []
|
116
117
|
rubyforge_project:
|
117
118
|
rubygems_version: 1.8.24
|
@@ -126,6 +127,7 @@ test_files:
|
|
126
127
|
- spec/fixtures/prices.xml
|
127
128
|
- spec/fixtures/prices_invalid_station_name.xml
|
128
129
|
- spec/fixtures/stations.xml
|
130
|
+
- spec/fixtures/stations_list_with_invalid_new_lines.xml
|
129
131
|
- spec/model/prices_url_spec.rb
|
130
132
|
- spec/ns_client_spec.rb
|
131
133
|
- spec/nsyapi_spec.rb
|