gares 2.0.1 → 2.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 4702068cf0cdbfaa09688c6d7ca85b761c7ee3f3
4
- data.tar.gz: 77b3f7296d478e7c508843910e5fe8e367bf9334
3
+ metadata.gz: 5b7f08cfd31cca43ba9a05d17d103d8a092a9d50
4
+ data.tar.gz: 11d1b1eb72fff644d1f0fe67a59cc68edf273072
5
5
  SHA512:
6
- metadata.gz: cfbb732a4c47ed9fa44439e45d3a05cbaa2c0134422154a7a63f332d73dd0316c98f5d1042ff5afc3fe142293dd8003a4fcaab1e56022321c991fc7295dddade
7
- data.tar.gz: 9263b6f9f0d56f0f7062c5dac8a70fface1ed59f3d6a1b81554483c21170faa97826004809b2bcf4cb8ea1cde4dd21bb8f4b80b21a9e25aba9db02d65dd36f6e
6
+ metadata.gz: 7c18477831fa2520b08ad6d1bd1fcbbf2f2271ed68cf21c23e7d3e0a9bd5b7f1317d2b24d7efede154875d772d43e73cb46c8221c705abd0398c50fe2c43cc0d
7
+ data.tar.gz: a4fb97957f8c1aac0f7e9a8140148eff784c0f7fa9307178f89ee146d669b36d733bbec45efe6469edddcad020f414977d83898abe297b68d5664ff239a8aa6f
data/README.md CHANGED
@@ -32,10 +32,10 @@ Gares currently features the following:
32
32
  [g.latitude, g.longitude]
33
33
  #=> [45.760568, 4.859991]
34
34
 
35
- g.departuring_trains.first
35
+ g.departing_trains.first
36
36
  #=> #<Gares::Train heure="05:50" num=9852 type="TGV" origdest=#<Gares::Station name="Bruxelles" ...> ...>
37
37
 
38
- g.departuring_trains.first.platform
38
+ g.departing_trains.first.platform
39
39
  #=> "K"
40
40
 
41
41
  See the [`Gares::Base` class documentation](http://www.rubydoc.info/github/paulrbr/gares/master/Gares/Base) for all available data on a station.
data/lib/gares/base.rb CHANGED
@@ -87,7 +87,8 @@ module Gares
87
87
 
88
88
  def tvs
89
89
  if uic8_sncf
90
- @tvs ||= self.class.open_data_sncf(uic8_sncf, :tvs).split(" ").first
90
+ @raw_tvs ||= self.class.open_data_sncf(uic8_sncf, :tvs)
91
+ @raw_tvs.split(" ").first if @raw_tvs
91
92
  end
92
93
  end
93
94
 
@@ -98,6 +99,8 @@ module Gares
98
99
  all_trains = raw_trains.map do |raw_train|
99
100
  raw_train[:num] = raw_train[:num].to_i
100
101
  raw_train[:date] = Time.now
102
+ key = direction == :departure ? :orig : :dest
103
+ raw_train[key] = self
101
104
  Gares::Train.new(raw_train)
102
105
  end
103
106
  instance_variable_set(variable, all_trains)
data/lib/gares/train.rb CHANGED
@@ -4,7 +4,8 @@ require "uri"
4
4
  module Gares
5
5
  # Represents a train from http://www.sncf.com/fr/horaires-info-trafic/train
6
6
  class Train < Hashie::Dash
7
- property :origdest
7
+ property :orig
8
+ property :dest
8
9
  property :num, required: true
9
10
  property :date, required: true
10
11
  property :type
@@ -24,11 +25,15 @@ module Gares
24
25
  # will be performed when a new object is created. An HTTP request is made
25
26
  # Only when you use an accessor that needs remote data.
26
27
  def initialize(*arguments)
27
- fail "Please provide a train number" unless arguments.first[:num].is_a?(Integer)
28
- fail "Please provide a departure date" unless arguments.first[:date].is_a?(Time)
28
+ attributes = arguments.first
29
29
 
30
- if arguments.first[:origdest]
31
- arguments.first[:origdest] = Gares::Station.search(arguments.first[:origdest]).first
30
+ fail "Please provide a train number" unless attributes[:num].is_a?(Integer)
31
+ fail "Please provide a departure date" unless attributes[:date].is_a?(Time)
32
+
33
+ if attributes[:origdest]
34
+ @origdest = attributes[:orig].nil? ? :orig : :dest
35
+ attributes[@origdest] = Gares::Station.search(attributes[:origdest]).first
36
+ attributes.delete(:origdest)
32
37
  end
33
38
 
34
39
  super(*arguments)
@@ -39,9 +44,13 @@ module Gares
39
44
  num
40
45
  end
41
46
 
42
- # @return [TrainStop] The departure point of the train
47
+ # @return [Station] The departure station of the train
43
48
  def departure
44
- @departure ||= TrainStop.new(document.at('tr.itinerary-start'), date)
49
+ if orig
50
+ orig
51
+ else
52
+ @departure ||= TrainStop.new(document.at('tr.itinerary-start'), date)
53
+ end
45
54
  end
46
55
 
47
56
  # @return [Array<TrainStop>] A list of all stops between departure and arrival stations.
@@ -49,9 +58,19 @@ module Gares
49
58
  @stops ||= document.css('tr.itinerary-stop').map { |stop| TrainStop.new(stop, date) }
50
59
  end
51
60
 
52
- # @return [TrainStop] The arrival point of the train
61
+ # @return [Station] The arrival station of the train
53
62
  def arrival
54
- @arrival ||= TrainStop.new(document.at('tr.itinerary-end'), date)
63
+ if dest
64
+ dest
65
+ else
66
+ @arrival ||= TrainStop.new(document.at('tr.itinerary-end'), date)
67
+ end
68
+ end
69
+
70
+ # @deprecated
71
+ def origdest
72
+ warn("[DEPRECATED] Warning: This method is deprecated, please use `orig` or `dest` instead of `origdest`")
73
+ send(@origdest)
55
74
  end
56
75
 
57
76
  def delayed?
data/lib/gares/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Gares
2
- VERSION = '2.0.1'
2
+ VERSION = '2.1.0'
3
3
  end
@@ -0,0 +1,21 @@
1
+ HTTP/1.1 200 OK
2
+ Server: nginx
3
+ Date: Sat, 09 May 2015 14:06:47 GMT
4
+ Content-Type: application/json; charset=utf-8
5
+ Transfer-Encoding: chunked
6
+ Connection: keep-alive
7
+ X-RateLimit-Remaining: 4898
8
+ Access-Control-Allow-Headers: Authorization, X-Requested-With, Origin, ODS-API-Analytics-App, ODS-Widgets-Version
9
+ Content-Language: fr
10
+ Access-Control-Max-Age: 1000
11
+ Expires: Fri, 01 Jan 1990 00:00:00 GMT
12
+ Vary: Accept-Language, Cookie, Host
13
+ X-RateLimit-Limit: 5000
14
+ Pragma: no-cache
15
+ Cache-Control: no-cache, no-store, max-age=0, must-revalidate
16
+ Access-Control-Allow-Origin: *
17
+ Access-Control-Allow-Methods: POST, GET, OPTIONS
18
+ X-RateLimit-Reset: 1431216000
19
+ X-UA-Compatible: IE=edge
20
+
21
+ {"nhits": 0, "parameters": {"dataset": ["referentiel-gares-voyageurs"], "timezone": "UTC", "q": "0088140010", "rows": 10, "format": "json"}, "records": []}
@@ -1,3 +1,4 @@
1
+ # -*- coding: utf-8 -*-
1
2
  require 'spec_helper'
2
3
 
3
4
  # This test uses "Lyon Part-Dieu" as a testing sample:
@@ -35,16 +36,20 @@ describe Gares::Station do
35
36
 
36
37
  it 'has a list of departure trains' do
37
38
  expect(subject.departures.size).to eq(20)
38
- expect(subject.departures.first.origdest.name).to eq('Bruxelles')
39
+ expect(subject.departures.first.arrival.name).to eq('Bruxelles')
39
40
  expect(subject.departures.first.heure).to eq('05:50')
40
41
  expect(subject.departures.first.type).to eq('TGV')
42
+ # Still supports deprecated field
43
+ expect(subject.departures.first.origdest.name).to eq('Bruxelles')
41
44
  end
42
45
 
43
46
  it 'has a list of arrivals' do
44
- expect(subject.arrivals.last.origdest.name).to eq('Chambéry Challes-les-Eaux')
47
+ expect(subject.arrivals.last.departure.name).to eq('Chambéry Challes-les-Eaux')
45
48
  expect(subject.arrivals.last.voie).to eq('')
46
49
  expect(subject.arrivals.last.platform).to eq(subject.arrivals.last.voie)
47
50
  expect(subject.arrivals.last.num).to eq(18542)
51
+ # Still supports deprecated field
52
+ expect(subject.arrivals.last.origdest.name).to eq('Chambéry Challes-les-Eaux')
48
53
  end
49
54
 
50
55
  context 'Station of Agde' do
@@ -63,9 +68,19 @@ describe Gares::Station do
63
68
  Gares::Station.find_by_sncf_id('frpno')
64
69
  end
65
70
 
66
- describe 'a gare with a BLS' do
71
+ describe 'its TVS number' do
67
72
  it { expect(subject.send(:tvs)).to eq("PNO") }
68
73
  end
69
74
  end
70
- end
75
+
76
+ context 'A station which has no TVS from SNCF open data - Bruxelles-midi' do
77
+ subject do
78
+ Gares::Station.find_by_sncf_id('bebmi')
79
+ end
80
+
81
+ describe 'a gare with no TVS' do
82
+ it { expect(subject.send(:tvs)).to be_nil }
83
+ end
84
+ end
85
+ end
71
86
  end
data/spec/spec_helper.rb CHANGED
@@ -26,6 +26,7 @@ GARES_SAMPLES = {
26
26
  'https://raw.githubusercontent.com/paulrbr/stations/stations-with-bls/stations.csv' => 'bls.csv',
27
27
  'https://ressources.data.sncf.com/api/records/1.0/search?dataset=referentiel-gares-voyageurs&q=0087723197' => '87723197.json', # Lyon Part-Dieu
28
28
  'https://ressources.data.sncf.com/api/records/1.0/search?dataset=referentiel-gares-voyageurs&q=0087271007' => '87271007.json', # Paris Gare-du-Nord
29
+ 'https://ressources.data.sncf.com/api/records/1.0/search?dataset=referentiel-gares-voyageurs&q=0088140010' => '88140010.json', # Bruxelles Midi
29
30
  'http://www.gares-sncf.com/fr/train-times/arrival/LYD/gl' => 'LYD-arrivals.json',
30
31
  'http://www.gares-sncf.com/fr/train-times/departure/LYD/gl' => 'LYD-departures.json'
31
32
  }
metadata CHANGED
@@ -1,209 +1,209 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gares
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.1
4
+ version: 2.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Paul Bonaud
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-05-08 00:00:00.000000000 Z
11
+ date: 2015-05-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: nokogiri
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ~>
18
18
  - !ruby/object:Gem::Version
19
19
  version: '1.6'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - "~>"
24
+ - - ~>
25
25
  - !ruby/object:Gem::Version
26
26
  version: '1.6'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: hashie
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - "~>"
31
+ - - ~>
32
32
  - !ruby/object:Gem::Version
33
33
  version: '3.4'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - "~>"
38
+ - - ~>
39
39
  - !ruby/object:Gem::Version
40
40
  version: '3.4'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: smarter_csv
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - "~>"
45
+ - - ~>
46
46
  - !ruby/object:Gem::Version
47
47
  version: '1.0'
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - "~>"
52
+ - - ~>
53
53
  - !ruby/object:Gem::Version
54
54
  version: '1.0'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: unidecoder
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - "~>"
59
+ - - ~>
60
60
  - !ruby/object:Gem::Version
61
61
  version: '1.1'
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - "~>"
66
+ - - ~>
67
67
  - !ruby/object:Gem::Version
68
68
  version: '1.1'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: httparty
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - "~>"
73
+ - - ~>
74
74
  - !ruby/object:Gem::Version
75
75
  version: '0.13'
76
76
  type: :runtime
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - "~>"
80
+ - - ~>
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0.13'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: trie
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - ">="
87
+ - - '>='
88
88
  - !ruby/object:Gem::Version
89
89
  version: '0'
90
90
  type: :runtime
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - ">="
94
+ - - '>='
95
95
  - !ruby/object:Gem::Version
96
96
  version: '0'
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: rake
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
- - - ">="
101
+ - - '>='
102
102
  - !ruby/object:Gem::Version
103
103
  version: '0'
104
104
  type: :development
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
- - - ">="
108
+ - - '>='
109
109
  - !ruby/object:Gem::Version
110
110
  version: '0'
111
111
  - !ruby/object:Gem::Dependency
112
112
  name: rspec
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
- - - ">="
115
+ - - '>='
116
116
  - !ruby/object:Gem::Version
117
117
  version: '0'
118
118
  type: :development
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
- - - ">="
122
+ - - '>='
123
123
  - !ruby/object:Gem::Version
124
124
  version: '0'
125
125
  - !ruby/object:Gem::Dependency
126
126
  name: gokdok
127
127
  requirement: !ruby/object:Gem::Requirement
128
128
  requirements:
129
- - - ">="
129
+ - - '>='
130
130
  - !ruby/object:Gem::Version
131
131
  version: '0'
132
132
  type: :development
133
133
  prerelease: false
134
134
  version_requirements: !ruby/object:Gem::Requirement
135
135
  requirements:
136
- - - ">="
136
+ - - '>='
137
137
  - !ruby/object:Gem::Version
138
138
  version: '0'
139
139
  - !ruby/object:Gem::Dependency
140
140
  name: guard
141
141
  requirement: !ruby/object:Gem::Requirement
142
142
  requirements:
143
- - - ">="
143
+ - - '>='
144
144
  - !ruby/object:Gem::Version
145
145
  version: '0'
146
146
  type: :development
147
147
  prerelease: false
148
148
  version_requirements: !ruby/object:Gem::Requirement
149
149
  requirements:
150
- - - ">="
150
+ - - '>='
151
151
  - !ruby/object:Gem::Version
152
152
  version: '0'
153
153
  - !ruby/object:Gem::Dependency
154
154
  name: guard-rspec
155
155
  requirement: !ruby/object:Gem::Requirement
156
156
  requirements:
157
- - - ">="
157
+ - - '>='
158
158
  - !ruby/object:Gem::Version
159
159
  version: '0'
160
160
  type: :development
161
161
  prerelease: false
162
162
  version_requirements: !ruby/object:Gem::Requirement
163
163
  requirements:
164
- - - ">="
164
+ - - '>='
165
165
  - !ruby/object:Gem::Version
166
166
  version: '0'
167
167
  - !ruby/object:Gem::Dependency
168
168
  name: rdoc
169
169
  requirement: !ruby/object:Gem::Requirement
170
170
  requirements:
171
- - - ">="
171
+ - - '>='
172
172
  - !ruby/object:Gem::Version
173
173
  version: '0'
174
174
  type: :development
175
175
  prerelease: false
176
176
  version_requirements: !ruby/object:Gem::Requirement
177
177
  requirements:
178
- - - ">="
178
+ - - '>='
179
179
  - !ruby/object:Gem::Version
180
180
  version: '0'
181
181
  - !ruby/object:Gem::Dependency
182
182
  name: fakeweb
183
183
  requirement: !ruby/object:Gem::Requirement
184
184
  requirements:
185
- - - ">="
185
+ - - '>='
186
186
  - !ruby/object:Gem::Version
187
187
  version: '0'
188
188
  type: :development
189
189
  prerelease: false
190
190
  version_requirements: !ruby/object:Gem::Requirement
191
191
  requirements:
192
- - - ">="
192
+ - - '>='
193
193
  - !ruby/object:Gem::Version
194
194
  version: '0'
195
195
  - !ruby/object:Gem::Dependency
196
196
  name: coveralls
197
197
  requirement: !ruby/object:Gem::Requirement
198
198
  requirements:
199
- - - ">="
199
+ - - '>='
200
200
  - !ruby/object:Gem::Version
201
201
  version: '0'
202
202
  type: :development
203
203
  prerelease: false
204
204
  version_requirements: !ruby/object:Gem::Requirement
205
205
  requirements:
206
- - - ">="
206
+ - - '>='
207
207
  - !ruby/object:Gem::Version
208
208
  version: '0'
209
209
  description: Easily use Ruby or the command line to find information on gares-sncf.com
@@ -214,11 +214,11 @@ executables: []
214
214
  extensions: []
215
215
  extra_rdoc_files: []
216
216
  files:
217
- - ".gitignore"
218
- - ".rspec"
219
- - ".rubocop.yml"
220
- - ".rubocop_todo.yml"
221
- - ".travis.yml"
217
+ - .gitignore
218
+ - .rspec
219
+ - .rubocop.yml
220
+ - .rubocop_todo.yml
221
+ - .travis.yml
222
222
  - Gemfile
223
223
  - Guardfile
224
224
  - MIT-LICENSE
@@ -238,6 +238,7 @@ files:
238
238
  - lib/string_extensions.rb
239
239
  - spec/fixtures/87271007.json
240
240
  - spec/fixtures/87723197.json
241
+ - spec/fixtures/88140010.json
241
242
  - spec/fixtures/LYD-arrivals.json
242
243
  - spec/fixtures/LYD-departures.json
243
244
  - spec/fixtures/bls.csv
@@ -273,19 +274,18 @@ require_paths:
273
274
  - lib
274
275
  required_ruby_version: !ruby/object:Gem::Requirement
275
276
  requirements:
276
- - - ">="
277
+ - - '>='
277
278
  - !ruby/object:Gem::Version
278
279
  version: '0'
279
280
  required_rubygems_version: !ruby/object:Gem::Requirement
280
281
  requirements:
281
- - - ">="
282
+ - - '>='
282
283
  - !ruby/object:Gem::Version
283
284
  version: '0'
284
285
  requirements: []
285
286
  rubyforge_project: gares
286
- rubygems_version: 2.2.0
287
+ rubygems_version: 2.0.3
287
288
  signing_key:
288
289
  specification_version: 4
289
290
  summary: Easily access the publicly available information on gares-sncf.com and sncf.com.
290
291
  test_files: []
291
- has_rdoc: