gares 1.0.0 → 1.1.0

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.
@@ -0,0 +1,352 @@
1
+ HTTP/1.1 200 OK
2
+ Content-Type: text/html;charset=UTF-8
3
+ X-UA-Compatible: IE=edge
4
+ Date: Sat, 25 Apr 2015 18:27:40 GMT
5
+ Content-Length: 21750
6
+ Connection: keep-alive
7
+ Set-Cookie: SNC_city=SDN_PRD6; path=/; domain=.sncf.com
8
+
9
+
10
+
11
+
12
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
13
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
14
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" dir="ltr" data-placeholder-focus="false">
15
+
16
+ <head>
17
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
18
+ <title>List of trains - Traffic &amp; timetable updates | SNCF</title>
19
+ <link rel="canonical" href="http://www.sncf.com/en/horaires-info-trafic/train/resultats" />
20
+ <meta name="revisit-after" content="1 day" />
21
+ <link rel="shortcut icon" href="/theme/favicon.ico" type="image/x-icon" />
22
+ <link href="http://www.sncf.com/fr/info-trafic" rel="canonical" />
23
+ <meta http-equiv="Content-Language" content="en" /> <link type="text/css" rel="stylesheet" media="all" href="/ressources/menu_icons/menu_icons_en.css?1" />
24
+ <link type="text/css" rel="stylesheet" media="all" href="/ressources/css/css_fa8eef945cc8331059f2b2fe01e8b03b.css" />
25
+ <link type="text/css" rel="stylesheet" media="all" href="/ressources/css/css_ec8154e529f1ae274507ee7da445a16c.css" />
26
+ <link type="text/css" rel="stylesheet" media="print" href="/ressources/css/css_37cfb2f93b571bec4cf2ecfe43124557.css" />
27
+ <!--[if IE 6]>
28
+ <link type="text/css" rel="stylesheet" media="all" href="/sites/all/themes/sncfninesixty/styles/ie6.css?1" />
29
+ <![endif]-->
30
+ <!--[if lte IE 7]>
31
+ <link type="text/css" rel="stylesheet" media="all" href="/sites/all/themes/sncfninesixty/styles/ie7-and-below.css?1" />
32
+ <![endif]-->
33
+ <!--[if IE 8]>
34
+ <link type="text/css" rel="stylesheet" media="all" href="/sites/all/themes/sncfninesixty/styles/ie8.css?1" />
35
+ <![endif]-->
36
+ <!--[if gte IE 9]>
37
+ <link type="text/css" rel="stylesheet" media="all" href="/sites/all/themes/sncfninesixty/styles/ie9-and-above.css?1" />
38
+ <![endif]-->
39
+ <link href="/css/Generic-transac.css" media="all" type="text/css" rel="stylesheet" />
40
+ <link href="/css/itineraries.css" media="all" type="text/css" rel="stylesheet" /><link href="/css/train.css" media="all" type="text/css" rel="stylesheet" />
41
+ <script type="text/javascript" src="/ressources/js/js_89f43c3221c41b67e6924fff9b6a7908.js"></script>
42
+ <script type="text/javascript">
43
+ <!--//--><![CDATA[//><!--
44
+ jQuery.extend(Drupal.settings, { "basePath": "/", "googleanalytics": { "trackOutgoing": 1, "trackMailto": 1, "trackDownload": 1, "trackDownloadExtensions": "7z|aac|arc|arj|asf|asx|avi|bin|csv|doc|exe|flv|gif|gz|gzip|hqx|jar|jpe?g|js|mp(2|3|4|e?g)|mov(ie)?|msi|msp|pdf|phps|png|ppt|qtm?|ra(m|r)?|sea|sit|tar|tgz|torrent|txt|wav|wma|wmv|wpd|xls|xml|z|zip" }, "sncfcom_search_hours": { "list": { "form_start": "1", "form_end": "3" }, "calendar": { "form_start": "1", "form_end": "90" } }, "user_connected": false, "user_rights": { "1": "anonymous user" }, "user_valid": false, "site_language": "en", "site_country": null, "sncfcom_feature_id_chartes": { "nid": "32510" }, "radio": { "height": "400", "width": "632" }, "sncfcom_satisfaction": { "campaigns": [ { "sid": "1", "page": "/fr/contacts/foire-aux-questions", "height_delta": "0", "width_delta": "0", "campaign_url": "", "count_url": "" }, { "sid": "2", "page": "/fr/promotions-billets-train", "height_delta": "317", "width_delta": "25", "campaign_url": "http://www.monavis.sncf.com/website/4v0voyconet0BChH0/form/86/100?responsive=0\x26toolbar=0", "count_url": "http://jcvd.myfeelback.com/indicator/monavis_feedback_dircom?campaign=86\x26formsubmissiontag=Like" }, { "sid": "3", "page": "/fr/gare-", "height_delta": "230", "width_delta": "17", "campaign_url": "http://www.monavis.sncf.com/website/4v0vosh9h4RHM3cUM/form/85/99?responsive=0\x26toolbar=0", "count_url": "http://jcvd.myfeelback.com/indicator/monavis_feedback_dircom?campaign=85\x26formsubmissiontag=Like" }, { "sid": "4", "page": "/fr/itineraire/resultats", "height_delta": "318", "width_delta": "10", "campaign_url": "http://www.monavis.sncf.com/website/4v0voobke4qGav23I/form/84/98?responsive=0\x26toolbar=0", "count_url": "http://jcvd.myfeelback.com/indicator/monavis_feedback_dircom?campaign=84\x26formsubmissiontag=Like" } ] }, "sncfcom_tagcarrier_widget": "", "addthis": { "config_default": { "services_compact": "email,facebook,twitter,google_plusone_share,linkedin,viadeo,more", "ui_language": "en", "ui_click": true, "ui_508_compliant": false, "ui_use_css": true, "data_ga_tracker": "UA-1308810-1", "data_track_clickback": true, "pubid": "xa-4e2cfd1147868c4e" }, "share_default": null, "localize": { "share_caption": "Share with friends" } }, "campaigns_tracking": { "ttl": 90, "cname": "snc_links_id" } });
45
+ //--><!]]>
46
+ </script>
47
+ <script type="text/javascript">
48
+ <!--//--><![CDATA[//><!--
49
+ var popupradio_autoplay = true;
50
+ //--><!]]>
51
+ </script>
52
+ <script src="/js/Generic-transac.js" type="text/javascript"></script>
53
+ <script src="/js/itineraries.js" type="text/javascript"></script>
54
+ <script src="/js/ga_dynamic.js" type="text/javascript"></script>
55
+ <script src="/js/map-links.js" type="text/javascript"></script>
56
+ </head>
57
+
58
+ <body class="not-front not-logged-in page-node node-type-transac-page no-sidebars sncfcom-b2c sncfcom-colors-cb0044 i18n-en not-js">
59
+
60
+
61
+ <ul id="skip-links"><li><a href="#navbar-wrapper">Go to main menu</a></li><li><a href="#left-menu">Go to secondary menu</a></li><li><a href="#content">Go to content</a></li><li><a href="#footer">Go to footer</a></li></ul>
62
+
63
+ <div id='bubble_print' class='out'>Print this page</div><div id='bubble_share' class='out'>Share this page</div>
64
+
65
+ <div id="navbar-wrapper">
66
+ <div id="navbar">
67
+ <div id="sncf-barre-galactique" class="grid_d">
68
+
69
+ <div id="primary-menu">
70
+ <ul class="links"><li class="menu-12124 active-trail first"><a href="/en/passengers" title=" (Active section)"><span><span>Passengers</span></span></a></li>
71
+ <li class="menu-12126"><a href="/en/businesses-communities"><span><span>Businesses & Communities</span></span></a></li>
72
+ <li class="menu-15545 last"><a href="/en/group"><span><span>SNCF Group</span></span></a></li>
73
+ </ul> </div>
74
+
75
+ <div class="barre_right">
76
+
77
+ <div id="radio-menu">
78
+ <a href="#" class="open_radio"><span class="bold">SNCF</span> LA RADIO</a>
79
+ </div>
80
+
81
+
82
+ <div id="menu-langue">
83
+ <div><span>en</span></div><ul class="links" title="Change language"><li class="menu-1521 first"><a href="/voyageurs"><span class="js">Français</span><span class="no-js">Fr</span></a></li>
84
+ <li class="menu-1522"><a href="/en/passengers"><span class="js">English</span><span class="no-js">En</span></a></li>
85
+ <li class="menu-1523 last"><a href="/de/fahrgaste"><span class="js">Deutsch</span><span class="no-js">De</span></a></li>
86
+ </ul> </div>
87
+
88
+ </div>
89
+
90
+ </div> </div>
91
+ </div>
92
+ <div id="navbar-spacer"></div>
93
+
94
+ <div class="container_d">
95
+
96
+
97
+ <div class="grid_a" id="sidebar-left">
98
+ <div id="left-menu">
99
+ <div class="telecommand"><div class="arrow"></div><div class="content"><div class="logo"><a href="/en/passengers" title="Logo SNCF"><img src="/theme/images/logo-sncf.png" alt="Logo SNCF" title="Logo SNCF" width="131" height="76" /></a></div><ul><li class="menu-17388 active "><div class="text"><span><span>Tickets &amp; <span class="sncfcom-colors-automatic">train status</span></span></span></div><div class="submenu"><ul class="tc-content-2"><li class="menu-17393 no-icon first "><a href="http://en.voyages-sncf.com/en/" class=" " title="" target=""><span><span>Reservations</span></span></a></li><li class="menu-17389 active no-icon last "><a href="/en/sub-home/17389" class="sub-panel-form sub-form_infos_trafic has_sub-home sub-home-mlid-17389 " title="Open &quot;Timetables &amp; real-time traffic updates&quot; in a floating panel" target=""><span><span class='double_line'>Timetables &amp; real-time <br /><span class="sncfcom-colors-automatic">traffic updates</span></span></span></a></li></ul></div></li><li class="menu-58934 "><div class="text"><span><span>Passenger services</span></span></div><div class="submenu"><ul class="tc-content-2"><li class="menu-58935 first "><a href="/en/sub-home/58935" class=" has_sub-home sub-home-mlid-58935 " title="" target=""><span><span>All <span class="sncfcom-colors-automatic">passengers</span></span></span></a></li><li class="menu-58942 "><a href="/en/sub-home/58942" class=" has_sub-home sub-home-mlid-58942 " title="" target=""><span><span>Business <span class="sncfcom-colors-automatic">travel</span></span></span></a></li><li class="menu-58943 "><a href="/en/sub-home/58943" class=" has_sub-home sub-home-mlid-58943 " title="" target=""><span><span>Disability <span class="sncfcom-colors-automatic">access</span></span></span></a></li><li class="menu-58944 last "><a href="/en/sub-home/58944" class=" has_sub-home sub-home-mlid-58944 " title="" target=""><span><span>Group <span class="sncfcom-colors-automatic">travel</span></span></span></a></li></ul></div></li><li class="menu-58939 "><div class="text"><span><span>Trains &amp; coaches</span></span></div><div class="submenu"><ul class="tc-content-2"><li class="menu-58945 first "><a href="/en/sub-home/58945" class=" has_sub-home sub-home-mlid-58945 " title="" target=""><span><span>French <span class="sncfcom-colors-automatic">regions</span></span></span></a></li><li class="menu-58946 "><a href="/en/trains/transilien" class=" " title="" target=""><span><span>Paris <span class="sncfcom-colors-automatic">region</span></span></span></a></li><li class="menu-58947 "><a href="/en/sub-home/58947" class=" has_sub-home sub-home-mlid-58947 " title="" target=""><span><span>France</span></span></a></li><li class="menu-58948 last "><a href="/en/sub-home/58948" class=" has_sub-home sub-home-mlid-58948 " title="" target=""><span><span>Europe</span></span></a></li></ul></div></li><li class="menu-58940 "><div class="text"><span><span>Fares &amp; cards</span></span></div><div class="submenu"><ul class="tc-content-2"><li class="menu-17377 first "><a href="/en/special-deals" class=" " title="" target=""><span><span>Special Deals</span></span></a></li><li class="menu-58949 "><a href="/en/sub-home/58949" class=" has_sub-home sub-home-mlid-58949 " title="" target=""><span><span>Cards &amp; <span class="sncfcom-colors-automatic">discounts</span></span></span></a></li><li class="menu-58950 "><a href="/en/sub-home/58950" class=" has_sub-home sub-home-mlid-58950 " title="" target=""><span><span>Special <span class="sncfcom-colors-automatic">fares</span></span></span></a></li><li class="menu-58951 last "><a href="/en/sub-home/58951" class=" has_sub-home sub-home-mlid-58951 " title="" target=""><span><span>Loyalty <span class="sncfcom-colors-automatic">programmes</span></span></span></a></li></ul></div></li><li class="menu-58941 "><div class="text"><span><span>Customer relations</span></span></div><div class="submenu"><ul class="tc-content-2"><li class="menu-58990 first "><a href="/en/sub-home/58990" class=" has_sub-home sub-home-mlid-58990 " title="" target=""><span><span>Talk to us <span class="sncfcom-colors-automatic">on line</span></span></span></a></li><li class="menu-58952 "><a href="/en/sub-home/58952" class=" has_sub-home sub-home-mlid-58952 " title="" target=""><span><span>Contact <span class="sncfcom-colors-automatic">us</span></span></span></a></li><li class="menu-58953 "><a href="/en/sub-home/58953" class=" has_sub-home sub-home-mlid-58953 " title="" target=""><span><span>Our <span class="sncfcom-colors-automatic">commitments</span></span></span></a></li><li class="menu-58954 last "><a href="/en/sub-home/58954" class=" has_sub-home sub-home-mlid-58954 " title="" target=""><span><span class='double_line'>After-sales service <br /><span class="sncfcom-colors-automatic">&amp; Ombudsman</span></span></span></a></li></ul></div></li></ul></div></div>
100
+ </div>
101
+ </div>
102
+
103
+
104
+ <div class="grid_c container_content_12" id="content">
105
+
106
+ <div id="sncf-logo-print" class="grid_12"><img src="/theme/images/logo.png" alt ="" /></div>
107
+
108
+
109
+ <div class="content_text">
110
+ <div class="breadcrumb grid_10"><ul><li>Passengers</li> / <li>Tickets & train status</li> / <li>Timetables & real-time traffic updates</li> / <li title="Active page" class="last">Résultat de recherche : fiche train (en)</li></ul></div><div class="action-links grid_2">&nbsp;<span>&nbsp; <a class="print" target="_blank" href="/en/jprint/train/resultats">
111
+ </a>
112
+ <a role="button" class="addthis_button share" href="/en/horaires-info-trafic/train/resultats#">Share this page</a></span></div><div id="node-32510" class=" node clear-block">
113
+
114
+
115
+
116
+ <div class="content">
117
+ <div id="block-itineraires" class="transac-block transac-header">
118
+
119
+ <div class="container_12">
120
+ <h1 class="grid_9">
121
+ Timetables & real-time <br/><span class="sncfcom-colors-automatic">traffic updates</span>
122
+ </h1>
123
+ <div id="description" class="grid_8">
124
+ <h2>
125
+ Your <span class="sncfcom-colors-automatic">
126
+ search </span>
127
+ </h2>
128
+
129
+ <p class="search_summary">
130
+ Train no. : <strong>6815</strong><br/>
131
+ Travel date :
132
+ <strong> Saturday 25 April </strong>
133
+ </p>
134
+
135
+ <div class="search_modify">
136
+ <a href="/sncf/train/displayForm" id="lien-modifiere" class="sncfcom-colors-action-automatic">
137
+ Modify your search </a>
138
+ </div>
139
+
140
+ </div>
141
+ </div>
142
+
143
+
144
+ <hr class="clear border grid_12" />
145
+ <div id="result-container" class="grid_12 dedoublonnage">
146
+
147
+ <p id ="trains-doublons">Several trains match your search:</p>
148
+ <ul class="result-itineraries">
149
+ <li class="result-itinerary">
150
+ <ul>
151
+ <li class="itinerary-content ">
152
+ <input type="hidden" name="heure-depart" value="1429971360000" />
153
+ <input type="hidden" name="nb-correspondance" value="0" />
154
+ <input type="hidden" name="duree-trajet" value="386" />
155
+ <ul>
156
+ <li class="itinerary-abstract">
157
+ <div class="cell duration">Duration <strong>6h26</strong></div>
158
+ <div class="cell connection">
159
+ Direct journey </div>
160
+ <div class="cell itinerary-message ">
161
+ <span class="middle">
162
+
163
+ </span>
164
+ </div>
165
+ <div class="cell emissions">
166
+ <div class="co2-value"> : 2.7 kg </div>
167
+ </div>
168
+ <hr class="clear" />
169
+ </li>
170
+ <li class="row">
171
+ <table class="timetable ">
172
+ <tr class="itinerary-header">
173
+ <th class="duration">
174
+ Timetables </th>
175
+ <th class="duration new-schedule">
176
+ </th>
177
+ <th class="line"></th>
178
+ <th class="stations">Journey</th>
179
+ <th class="type">Type</th>
180
+ <th class="info">Information</th>
181
+ </tr>
182
+ <tr class="itinerary-start first ">
183
+ <td class="time ">16H16</td>
184
+ <td class="time new-schedule"></td>
185
+ <td class="line"></td>
186
+ <td class="stations"><div class="station">DIJON VILLE</div></td>
187
+
188
+ <td class="type TRN center" rowspan="2" >
189
+ <div class="train-type">TGV</div>
190
+ <div class="train-number">no.<strong>6815</strong></div>
191
+ </td>
192
+
193
+ <td class="info separator " >
194
+ <span class="titre">
195
+ On time
196
+ </span>
197
+ <hr/>
198
+ </td>
199
+ </tr>
200
+ <tr class="itinerary-end last ">
201
+ <td class="time ">22H37</td>
202
+ <td class="time new-schedule"></td>
203
+ <td class="line"></td>
204
+ <td class="stations">
205
+ <div class="station">NICE VILLE</div>
206
+ </td>
207
+ <td class="info disruption">
208
+ <span class="titre">
209
+ Delayed arrival 5MIN
210
+ </span>
211
+ </td>
212
+ </tr>
213
+ </table>
214
+ <a href="/sncf/train/displayDetailTrain?idItineraire=0" class="plus" action="train/displayDetailTrain?idItineraire=0">+</a>
215
+ </li>
216
+ </ul>
217
+ </li>
218
+ </ul>
219
+ </li>
220
+ <li class="result-itinerary">
221
+ <ul>
222
+ <li class="itinerary-content ">
223
+ <input type="hidden" name="heure-depart" value="1429945920000" />
224
+ <input type="hidden" name="nb-correspondance" value="0" />
225
+ <input type="hidden" name="duree-trajet" value="45" />
226
+ <ul>
227
+ <li class="itinerary-abstract">
228
+ <div class="cell duration">Duration <strong>0h45</strong></div>
229
+ <div class="cell connection">
230
+ Direct journey </div>
231
+ <div class="cell itinerary-message ">
232
+ <span class="middle">
233
+
234
+ </span>
235
+ </div>
236
+ <div class="cell emissions">
237
+ <div class="co2-value">n.a. </div>
238
+ </div>
239
+ <hr class="clear" />
240
+ </li>
241
+ <li class="row">
242
+ <table class="timetable ">
243
+ <tr class="itinerary-header">
244
+ <th class="duration">
245
+ Timetables </th>
246
+ <th class="duration new-schedule">
247
+ </th>
248
+ <th class="line"></th>
249
+ <th class="stations">Journey</th>
250
+ <th class="type">Type</th>
251
+ <th class="info">Information</th>
252
+ </tr>
253
+ <tr class="itinerary-start first ">
254
+ <td class="time ">09H12</td>
255
+ <td class="time new-schedule"></td>
256
+ <td class="line"></td>
257
+ <td class="stations"><div class="station">SPIEZ</div></td>
258
+
259
+ <td class="type TRN center" rowspan="2" >
260
+ <div class="train-type">INTERCITÉS</div>
261
+ <div class="train-number">no.<strong>6815</strong></div>
262
+ </td>
263
+
264
+ <td class="info center " rowspan="2">
265
+ <span class="titre">
266
+ On time
267
+ </span>
268
+
269
+ </td>
270
+ </tr>
271
+ <tr class="itinerary-end last ">
272
+ <td class="time ">09H57</td>
273
+ <td class="time new-schedule"></td>
274
+ <td class="line"></td>
275
+ <td class="stations">
276
+ <div class="station">ZWEISIMMEN</div>
277
+ </td>
278
+ </tr>
279
+ </table>
280
+ <a href="/sncf/train/displayDetailTrain?idItineraire=1" class="plus" action="train/displayDetailTrain?idItineraire=1">+</a>
281
+ </li>
282
+ </ul>
283
+ </li>
284
+ </ul>
285
+ </li>
286
+ </ul>
287
+ </div>
288
+
289
+
290
+ </div>
291
+ </div>
292
+
293
+ </div>
294
+ </div>
295
+
296
+
297
+ <div class="grid_c alpha omega" id="footer">
298
+ <div class="footer_content">
299
+
300
+ <div id="forgotten_password_block">
301
+ <a id="lb-close" tabindex="2">Fermer la popin</a>
302
+ <div class="forgotten_password identity">
303
+ <h3>Mot de passe oublié ?</h3>
304
+ <hr class="clear-border" />
305
+ <span class="identity-message">Indiquez l'adresse électronique utilisée lors de la création<br /> de votre compte. Un courriel vous sera envoyé pour définir<br /> votre mot de passe.</span>
306
+ <div class="form-item mail">
307
+ <label for="forgotten_password_email">Adresse électronique :</label>
308
+ <div class="message_fpw sncfcom-colors-error-automatic sncfcom-colors-automatic"></div>
309
+ <input type="text" maxlength="60" size="60" name="email_link" id="forgotten_password_email" value="" />
310
+ </div>
311
+ <div class="form-item">
312
+ <input type="submit" name="op" id="edit-send-mail-retrieve-password" value="Envoyer" class="form-submit sncfcom-colors-action-automatic sncfcom-colors-internal-caps-automatic" />
313
+ </div>
314
+ <div class="response-forgotten-password sncfcom-colors-automatic"></div>
315
+ </div>
316
+ </div>
317
+ <div id="block-sncfcom_navigation-footer" class="block block-sncfcom_navigation">
318
+
319
+ <div class="content">
320
+
321
+ <h2 class="grid_3 omega">Quick access : </h2>
322
+ <div id="quick-access" class="grid_10 alpha omega"><ul class="menu"><li class="leaf first"><a href="/en/education/schools">Teachers</a></li>
323
+ <li class="leaf last"><a href="/en/meet-sncf/finance/news">Finance</a></li>
324
+ </ul></div>
325
+
326
+ <hr class="clear border grid_12 no-margin" />
327
+
328
+ <div id="universes" class="grid_12"><ul class="menu"><li class="grid_4 first "><span><span>Passengers</span></span><ul class="menu"><li><a href="/en/reductions/lowest-fares">Travel at the lowest fares</a></li><li><a href="/en/services/mobile-apps-old">Mobile apps</a></li><li><a href="/en/services/after-sales-services">After-sales service</a></li></ul></li><li class="grid_4 "><span><span>Business and local communities</span></span><ul class="menu"><li><a href="/en/sub-home/15515">For business</a></li><li><a href="/en/sub-home/15518">For local communities</a></li><li><a href="/en/railway-companies">Railway Companies</a></li></ul></li><li class="grid_4 last "><span><span>SNCF Group</span></span><ul class="menu"><li><a href="/en/businesses/global-presence">Our global presence</a></li><li><a href="/en/our-commitments/sncf-foundation">SNCF Foundation</a></li></ul></li></ul></div>
329
+
330
+ <div id="radio-link" class="grid_4"><a href="http://laradio.sncf.com" target="_blank"><span class="bold">SNCF</span> LA RADIO</a></div>
331
+ <div id="about" class="grid_8"><ul class="menu"><li class="leaf first"><a href="/en/footer/legal-notice">Legal notice</a></li>
332
+ <li class="leaf last"><a href="http://sncf.com/cil/registre/">Contact for IT &amp; civil liberties issues</a></li>
333
+ </ul></div>
334
+
335
+ <hr class="clear" /> </div>
336
+ </div>
337
+ </div>
338
+ </div>
339
+
340
+ </div>
341
+ <div class="clear"></div>
342
+
343
+ </div>
344
+ <script type="text/javascript">
345
+ <!--//--><![CDATA[//><!--
346
+ var _gaq = _gaq || [];_gaq.push(["_setAccount", "UA-1308810-17"]);_gaq.push(["b._setAccount", "UA-1308810-1"]);(function() {var ga = document.createElement("script");ga.type = "text/javascript";ga.async = true;ga.src = ("https:" == document.location.protocol ? "https://ssl" : "http://www") + ".google-analytics.com/ga.js";var s = document.getElementsByTagName("script")[0];s.parentNode.insertBefore(ga, s);})();
347
+ //--><!]]>
348
+ </script>
349
+
350
+ </body>
351
+ </html>
352
+
Binary file
Binary file
Binary file
Binary file
@@ -0,0 +1,96 @@
1
+ # encoding: utf-8
2
+
3
+ require 'spec_helper'
4
+
5
+ describe Gares::Train do
6
+ describe 'a delayed train' do
7
+
8
+ let (:train_number) { 17709 }
9
+ let (:date) { Time.parse("2015-04-25") }
10
+
11
+ before do
12
+ # See tasks/fixtures.rake to change dataset
13
+ fake_response_for_train(train_number)
14
+ end
15
+
16
+ subject do
17
+ Gares::Train.new(train_number, date)
18
+ end
19
+
20
+ it "is delayed" do
21
+ expect(subject).to be_delayed
22
+ end
23
+
24
+ it "has a departure station" do
25
+ expect(subject.departure.departure_date).to eq(Time.parse('2015-04-25 09:18:00'))
26
+ expect(subject.departure.real_departure_date).to eq(Time.parse('2015-04-25 09:28:00'))
27
+ expect(subject.departure.station.name).to eq('Lyon Part Dieu')
28
+ expect(subject.departure.station.lat).to eql(45.760281)
29
+ expect(subject.departure.platform).to eq('--')
30
+
31
+ expect(subject.departure.delayed?).to be(true)
32
+ end
33
+
34
+ it "has stops" do
35
+ expect(subject.stops.size).to eq(12)
36
+ expect(subject.stops.first.station.name).to eq('Vienne')
37
+
38
+ expect(subject.stops[2].station.name).to eq('Tain l\'Hermitage Tournon')
39
+ expect(subject.stops[2].platform).to eq('B')
40
+ expect(subject.stops[2].minutes_of_delay).to eq(10)
41
+
42
+ expect(subject.stops.last.station.name).to eq('Vitrolles Aéroport Marseille Provence')
43
+ end
44
+
45
+ it "has a arrival station" do
46
+ expect(subject.arrival.arrival_date).to eq(Time.parse('2015-04-25 12:50:00'))
47
+ expect(subject.arrival.real_arrival_date).to eq(Time.parse('2015-04-25 13:00:00'))
48
+ expect(subject.arrival.station.name).to eq('Marseille St Charles')
49
+ expect(subject.arrival.platform).to eq('--')
50
+ end
51
+ end
52
+
53
+ describe 'an on-time train' do
54
+
55
+ let (:train_number) { 11641 }
56
+ let (:date) { Time.parse("2015-04-25") }
57
+
58
+ before do
59
+ # See tasks/fixtures.rake to change dataset
60
+ fake_response_for_train(train_number)
61
+ end
62
+
63
+ subject do
64
+ Gares::Train.new(train_number, date)
65
+ end
66
+
67
+ it "is delayed" do
68
+ expect(subject).to_not be_delayed
69
+ end
70
+
71
+ it "has a departure station" do
72
+ expect(subject.departure.departure_date).to eq(Time.parse('2015-04-25 06:42:00'))
73
+ expect(subject.departure.real_departure_date).to be_nil
74
+ expect(subject.departure.station.name).to eq('Paris Est')
75
+ expect(subject.departure.platform).to eq('--')
76
+
77
+ expect(subject.departure.delayed?).to be(false)
78
+ end
79
+
80
+ it "has stops" do
81
+ expect(subject.stops.size).to eq(7)
82
+ expect(subject.stops.first.station.name).to eq('Nogent sur Seine')
83
+
84
+ expect(subject.stops[2].station.name).to eq('Troyes')
85
+
86
+ expect(subject.stops.last.station.name).to eq('Langres')
87
+ end
88
+
89
+ it "has a arrival station" do
90
+ expect(subject.arrival.arrival_date).to eq(Time.parse('2015-04-25 09:45:00'))
91
+ expect(subject.arrival.real_arrival_date).to be_nil
92
+ expect(subject.arrival.station.name).to eq('Culmont - Chalindrey')
93
+ expect(subject.arrival.platform).to eq('--')
94
+ end
95
+ end
96
+ end
data/spec/spec_helper.rb CHANGED
@@ -8,8 +8,13 @@
8
8
  # no changes to the gares-en-mouvement.com interface have affected the parser.
9
9
  ###
10
10
 
11
+ require 'simplecov'
11
12
  require 'coveralls'
12
- Coveralls.wear!
13
+ SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter[
14
+ SimpleCov::Formatter::HTMLFormatter,
15
+ Coveralls::SimpleCov::Formatter
16
+ ]
17
+ SimpleCov.start
13
18
 
14
19
  $LOAD_PATH.unshift(File.dirname(__FILE__) + '/../lib')
15
20
  require 'gares'
@@ -18,6 +23,7 @@ def read_fixture(path)
18
23
  File.read(File.expand_path(File.join(File.dirname(__FILE__), 'fixtures', path)))
19
24
  end
20
25
 
26
+ # Fixtures for Gares
21
27
  GARES_SAMPLES = {
22
28
  'http://www.gares-en-mouvement.com/fr/frqxb/services-en-gare/vente/' => 'frqxb-services-vente',
23
29
  'http://www.gares-en-mouvement.com/fr/frqxb/services-en-gare/service/' => 'frqxb-services',
@@ -30,6 +36,14 @@ GARES_SAMPLES = {
30
36
  'https://www.kimonolabs.com/api/7jys32dy?apikey=lsOO4tNm78cH9JxqWg9gAk9l4nYaou9j&kimmodify=1' => 'search'
31
37
  }
32
38
 
39
+ # Sample fixtures for Trains
40
+ TRAINS_SAMPLES = [
41
+ { 17709 => 'train-17709' },
42
+ { 11641 => 'train-11641' },
43
+ { 17495 => 'train-17495' },
44
+ { 6815 => 'train-6815' }, # Multi-itinerary
45
+ ]
46
+
33
47
  unless ENV['LIVE_TEST']
34
48
  begin
35
49
  require 'rubygems'
@@ -44,3 +58,18 @@ unless ENV['LIVE_TEST']
44
58
  puts 'You can run `gem install fakeweb` to stub out the responses.'
45
59
  end
46
60
  end
61
+
62
+ def fake_response_for_train(number)
63
+ unless ENV['LIVE_TEST']
64
+ begin
65
+ response = TRAINS_SAMPLES.find { |sample| sample.keys.first == number }.values.first
66
+ sncf_result_url = 'http://www.sncf.com/en/horaires-info-trafic/train/resultats'
67
+ FakeWeb.register_uri(:get, sncf_result_url, response: read_fixture("get-#{response}"))
68
+ sncf_post_url = 'http://www.sncf.com/sncf/train'
69
+ FakeWeb.register_uri(:post, sncf_post_url, response: read_fixture("post-#{response}"))
70
+ rescue LoadError
71
+ puts 'Could not load FakeWeb, these tests will hit gares-en-mouvement.com'
72
+ puts 'You can run `gem install fakeweb` to stub out the responses.'
73
+ end
74
+ end
75
+ end
data/tasks/fixtures.rake CHANGED
@@ -13,5 +13,27 @@ namespace :fixtures do
13
13
  end
14
14
 
15
15
  end
16
+ TRAINS_SAMPLES.each do |train|
17
+ post_fixture = "post-#{train.values.first}"
18
+ get_fixture = "get-#{train.values.first}"
19
+ train_number = train.keys.first
20
+ next if !ONLY.empty? and !ONLY.include?(post_fixture)
21
+ page = `curl -is 'http://www.sncf.com/sncf/train' --data 'numeroTrain=#{train_number}&date=25%2F04%2F2015'`
22
+
23
+ File.open(File.expand_path(File.dirname(__FILE__) + "/../spec/fixtures/#{post_fixture}"), 'w') do |f|
24
+ f.write(page)
25
+ end
26
+
27
+ cookies = page.force_encoding('ISO-8859-1').encode('UTF-8').split("\n").map do |line|
28
+ if md = line.match(/Set-Cookie: (.*?);/)
29
+ md.captures.first
30
+ end
31
+ end.compact
32
+ page = `curl -is 'http://www.sncf.com/en/horaires-info-trafic/train/resultats' -H 'Cookie: #{cookies.join(";")}'`
33
+
34
+ File.open(File.expand_path(File.dirname(__FILE__) + "/../spec/fixtures/#{get_fixture}"), 'w') do |f|
35
+ f.write(page)
36
+ end
37
+ end
16
38
  end
17
39
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gares
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Paul Bonaud
@@ -52,6 +52,20 @@ dependencies:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: '1.1'
55
+ - !ruby/object:Gem::Dependency
56
+ name: httparty
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '0.13'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '0.13'
55
69
  - !ruby/object:Gem::Dependency
56
70
  name: rake
57
71
  requirement: !ruby/object:Gem::Requirement
@@ -190,6 +204,8 @@ files:
190
204
  - lib/gares/station.rb
191
205
  - lib/gares/station_list.rb
192
206
  - lib/gares/string_extensions.rb
207
+ - lib/gares/train.rb
208
+ - lib/gares/train_stop.rb
193
209
  - lib/gares/version.rb
194
210
  - spec/fixtures/frabt
195
211
  - spec/fixtures/frabt-services-vente
@@ -200,11 +216,20 @@ files:
200
216
  - spec/fixtures/frqxb-services
201
217
  - spec/fixtures/frqxb-services-vente
202
218
  - spec/fixtures/frxag
219
+ - spec/fixtures/get-train-11641
220
+ - spec/fixtures/get-train-17495
221
+ - spec/fixtures/get-train-17709
222
+ - spec/fixtures/get-train-6815
223
+ - spec/fixtures/post-train-11641
224
+ - spec/fixtures/post-train-17495
225
+ - spec/fixtures/post-train-17709
226
+ - spec/fixtures/post-train-6815
203
227
  - spec/fixtures/search
204
228
  - spec/gares/gare_spec.rb
205
229
  - spec/gares/sales_spec.rb
206
230
  - spec/gares/search_spec.rb
207
231
  - spec/gares/string_extensions_spec.rb
232
+ - spec/gares/train_spec.rb
208
233
  - spec/spec_helper.rb
209
234
  - tasks/fixtures.rake
210
235
  - tasks/rspec.rake