muni 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.
@@ -5,10 +5,21 @@ module Muni
5
5
  class Stop < Base
6
6
  def predictions
7
7
  stop = Stop.send(:fetch, :predictions, r: route_tag, d: direction, s: tag)
8
- return [] unless stop && stop['predictions']
9
- stop['predictions'].first['direction'].first['prediction'].collect do |pred|
8
+ available_predictions(stop).collect do |pred|
10
9
  Prediction.new(pred)
11
10
  end
12
11
  end
12
+
13
+ private
14
+
15
+ def available_predictions(stop)
16
+ return [] unless stop &&
17
+ stop['predictions'] &&
18
+ stop['predictions'].first['direction'] &&
19
+ stop['predictions'].first['direction'].first['prediction']
20
+
21
+ stop['predictions'].first['direction'].first['prediction']
22
+ end
23
+
13
24
  end
14
25
  end
@@ -1,3 +1,3 @@
1
1
  module Muni
2
- VERSION = "0.0.4"
2
+ VERSION = "0.0.5"
3
3
  end
@@ -260,4 +260,486 @@ http_interactions:
260
260
  lon=\"-122.42019\"/>\n</path>\n</route>\n</body>\n"
261
261
  http_version:
262
262
  recorded_at: Wed, 21 Nov 2012 17:58:15 GMT
263
+ - request:
264
+ method: get
265
+ uri: http://webservices.nextbus.com/service/publicXMLFeed?a=sf-muni&command=routeConfig&r=38
266
+ body: ''
267
+ headers:
268
+ Accept:
269
+ - ! '*/*'
270
+ User-Agent:
271
+ - Ruby
272
+ response:
273
+ status:
274
+ code: 200
275
+ message: OK
276
+ headers:
277
+ Date:
278
+ - Tue, 04 Dec 2012 17:07:00 GMT
279
+ Server:
280
+ - Apache/2.2.4 (Unix) mod_ssl/2.2.4 OpenSSL/0.9.7m DAV/2 mod_jk/1.2.30
281
+ Access-Control-Allow-Origin:
282
+ - ! '*'
283
+ Vary:
284
+ - Accept-Encoding
285
+ Content-Type:
286
+ - text/xml
287
+ Transfer-Encoding:
288
+ - chunked
289
+ body: ! "<?xml version=\"1.0\" encoding=\"utf-8\" ?> \n<body copyright=\"All data
290
+ copyright San Francisco Muni 2012.\">\n<route tag=\"38\" title=\"38-Geary\"
291
+ color=\"ff6633\" oppositeColor=\"000000\" latMin=\"37.7759999\" latMax=\"37.7917499\"
292
+ lonMin=\"-122.50941\" lonMax=\"-122.3933\">\n<stop tag=\"7620\" title=\"Main
293
+ St &amp; Howard St\" lat=\"37.7905499\" lon=\"-122.3933\" stopId=\"17620\"/>\n<stop
294
+ tag=\"5579\" title=\"Mission St &amp; Beale St\" lat=\"37.7911399\" lon=\"-122.39592\"
295
+ stopId=\"15579\"/>\n<stop tag=\"4725\" title=\"Fremont St &amp; Market St\"
296
+ lat=\"37.7916499\" lon=\"-122.3981499\" stopId=\"14725\"/>\n<stop tag=\"5689\"
297
+ title=\"Market St &amp; Sansome St\" lat=\"37.79016\" lon=\"-122.4004099\" stopId=\"15689\"/>\n<stop
298
+ tag=\"5684\" title=\"Market St &amp; Montgomery St\" lat=\"37.7884899\" lon=\"-122.40248\"
299
+ stopId=\"15684\"/>\n<stop tag=\"4301\" title=\"Geary Blvd &amp; Kearny St\"
300
+ lat=\"37.7879999\" lon=\"-122.4036599\" stopId=\"14301\"/>\n<stop tag=\"4766\"
301
+ title=\"Geary Blvd &amp; Stockton St\" lat=\"37.78764\" lon=\"-122.4064899\"
302
+ stopId=\"14766\"/>\n<stop tag=\"4757\" title=\"Geary Blvd &amp; Powell St\"
303
+ lat=\"37.7873999\" lon=\"-122.40839\" stopId=\"14757\"/>\n<stop tag=\"4767\"
304
+ title=\"Geary Blvd &amp; Taylor St\" lat=\"37.78698\" lon=\"-122.4116799\" stopId=\"14767\"/>\n<stop
305
+ tag=\"4300\" title=\"Geary Blvd &amp; Jones St\" lat=\"37.78677\" lon=\"-122.4133299\"
306
+ stopId=\"14300\"/>\n<stop tag=\"4303\" title=\"Geary Blvd &amp; Leavenworth
307
+ St\" lat=\"37.78656\" lon=\"-122.4149699\" stopId=\"14303\"/>\n<stop tag=\"4299\"
308
+ title=\"Geary Blvd &amp; Hyde St\" lat=\"37.78635\" lon=\"-122.4166099\" stopId=\"14299\"/>\n<stop
309
+ tag=\"4302\" title=\"Geary Blvd &amp; Larkin St\" lat=\"37.7861399\" lon=\"-122.41825\"
310
+ stopId=\"14302\"/>\n<stop tag=\"4768\" title=\"Geary Blvd &amp; Van Ness Ave\"
311
+ lat=\"37.7858399\" lon=\"-122.42063\" stopId=\"14768\"/>\n<stop tag=\"4297\"
312
+ title=\"Geary Blvd &amp; Franklin St\" lat=\"37.7855699\" lon=\"-122.42289\"
313
+ stopId=\"14297\"/>\n<stop tag=\"4298\" title=\"Geary Blvd &amp; Gough St\" lat=\"37.7854299\"
314
+ lon=\"-122.4250799\" stopId=\"14298\"/>\n<stop tag=\"4304\" title=\"Geary Blvd
315
+ &amp; Laguna St\" lat=\"37.78503\" lon=\"-122.4278099\" stopId=\"14304\"/>\n<stop
316
+ tag=\"4769\" title=\"Geary Blvd &amp; Webster St\" lat=\"37.7846399\" lon=\"-122.43102\"
317
+ stopId=\"14769\"/>\n<stop tag=\"4295\" title=\"Geary Blvd &amp; Fillmore St\"
318
+ lat=\"37.7843899\" lon=\"-122.43305\" stopId=\"14295\"/>\n<stop tag=\"4760\"
319
+ title=\"Geary Blvd &amp; Scott St\" lat=\"37.78385\" lon=\"-122.4377599\" stopId=\"14760\"/>\n<stop
320
+ tag=\"4293\" title=\"Geary Blvd &amp; Divisadero St\" lat=\"37.78343\" lon=\"-122.4393699\"
321
+ stopId=\"14293\"/>\n<stop tag=\"4289\" title=\"Geary Blvd &amp; Baker St\" lat=\"37.7829699\"
322
+ lon=\"-122.44296\" stopId=\"14289\"/>\n<stop tag=\"4758\" title=\"Geary Blvd
323
+ &amp; Presidio Ave\" lat=\"37.7825099\" lon=\"-122.4468\" stopId=\"14758\"/>\n<stop
324
+ tag=\"4290\" title=\"Geary Blvd &amp; Collins St\" lat=\"37.78224\" lon=\"-122.4499899\"
325
+ stopId=\"14290\"/>\n<stop tag=\"4762\" title=\"Geary Blvd &amp; Spruce St\"
326
+ lat=\"37.7818499\" lon=\"-122.45307\" stopId=\"14762\"/>\n<stop tag=\"4292\"
327
+ title=\"Geary Blvd &amp; Commonwealth St\" lat=\"37.7815299\" lon=\"-122.45568\"
328
+ stopId=\"14292\"/>\n<stop tag=\"4287\" title=\"Geary Blvd &amp; Arguello Blvd\"
329
+ lat=\"37.7813799\" lon=\"-122.45874\" stopId=\"14287\"/>\n<stop tag=\"4255\"
330
+ title=\"Geary Blvd &amp; 3rd Ave\" lat=\"37.78128\" lon=\"-122.4609399\" stopId=\"14255\"/>\n<stop
331
+ tag=\"4257\" title=\"Geary Blvd &amp; 6th Ave\" lat=\"37.7811299\" lon=\"-122.46416\"
332
+ stopId=\"14257\"/>\n<stop tag=\"4259\" title=\"Geary Blvd &amp; 9th Ave\" lat=\"37.78098\"
333
+ lon=\"-122.4676399\" stopId=\"14259\"/>\n<stop tag=\"4261\" title=\"Geary Blvd
334
+ &amp; 12th Ave\" lat=\"37.78084\" lon=\"-122.4705999\" stopId=\"14261\"/>\n<stop
335
+ tag=\"4755\" title=\"Geary Blvd &amp; Park Presidio Blvd\" lat=\"37.7806899\"
336
+ lon=\"-122.47242\" stopId=\"14755\"/>\n<stop tag=\"4263\" title=\"Geary Blvd
337
+ &amp; 17th Ave\" lat=\"37.7805999\" lon=\"-122.47604\" stopId=\"14263\"/>\n<stop
338
+ tag=\"4265\" title=\"Geary Blvd &amp; 20th Ave\" lat=\"37.78045\" lon=\"-122.4792699\"
339
+ stopId=\"14265\"/>\n<stop tag=\"4267\" title=\"Geary Blvd &amp; 22nd Ave\" lat=\"37.78035\"
340
+ lon=\"-122.4813999\" stopId=\"14267\"/>\n<stop tag=\"4269\" title=\"Geary Blvd
341
+ &amp; 25th Ave\" lat=\"37.7802199\" lon=\"-122.48461\" stopId=\"14269\"/>\n<stop
342
+ tag=\"4271\" title=\"Geary Blvd &amp; 28th Ave\" lat=\"37.7800099\" lon=\"-122.48781\"
343
+ stopId=\"14271\"/>\n<stop tag=\"4273\" title=\"Geary Blvd &amp; 30th Ave\" lat=\"37.7799599\"
344
+ lon=\"-122.48997\" stopId=\"14273\"/>\n<stop tag=\"3560\" title=\"33rd Ave &amp;
345
+ Geary Blvd\" lat=\"37.7795699\" lon=\"-122.49338\" stopId=\"13560\"/>\n<stop
346
+ tag=\"3551\" title=\"33rd Ave &amp; Anza St\" lat=\"37.77786\" lon=\"-122.49325\"
347
+ stopId=\"13551\"/>\n<stop tag=\"3554\" title=\"33rd Ave &amp; Balboa St\" lat=\"37.7759999\"
348
+ lon=\"-122.4931299\" stopId=\"13554\"/>\n<stop tag=\"33545\" title=\"32nd Ave
349
+ &amp; Balboa St\" lat=\"37.7766799\" lon=\"-122.49195\" stopId=\"133545\"/>\n<stop
350
+ tag=\"4278\" title=\"Geary Blvd &amp; 33rd Ave\" lat=\"37.7797999\" lon=\"-122.49344\"
351
+ stopId=\"14278\"/>\n<stop tag=\"4280\" title=\"Geary Blvd &amp; 36th Ave\" lat=\"37.7796699\"
352
+ lon=\"-122.4964\" stopId=\"14280\"/>\n<stop tag=\"4282\" title=\"Geary Blvd
353
+ &amp; 40th Ave\" lat=\"37.7794699\" lon=\"-122.50068\" stopId=\"14282\"/>\n<stop
354
+ tag=\"6109\" title=\"Point Lobos Ave &amp; 42nd Ave\" lat=\"37.7796499\" lon=\"-122.5028499\"
355
+ stopId=\"16109\"/>\n<stop tag=\"3566\" title=\"42nd Ave &amp; Clement St\" lat=\"37.7810899\"
356
+ lon=\"-122.5029899\" stopId=\"13566\"/>\n<stop tag=\"5511\" title=\"Fort Miley
357
+ Hospital\" lat=\"37.7818299\" lon=\"-122.50411\" stopId=\"15511\"/>\n<stop tag=\"3567\"
358
+ title=\"43rd Ave &amp; Clement St\" lat=\"37.78101\" lon=\"-122.5042299\" stopId=\"13567\"/>\n<stop
359
+ tag=\"3568\" title=\"43rd Ave &amp; Point Lobos Ave\" lat=\"37.7797799\" lon=\"-122.5041399\"
360
+ stopId=\"13568\"/>\n<stop tag=\"6111\" title=\"Point Lobos Ave &amp; 44th Ave\"
361
+ lat=\"37.77984\" lon=\"-122.50501\" stopId=\"16111\"/>\n<stop tag=\"6129\" title=\"Point
362
+ Lobos Ave &amp; 46th Ave\" lat=\"37.7800399\" lon=\"-122.50744\" stopId=\"16129\"/>\n<stop
363
+ tag=\"33608\" title=\"48th Ave &amp; Point Lobos Ave\" lat=\"37.7790199\" lon=\"-122.50941\"
364
+ stopId=\"133608\"/>\n<stop tag=\"35511\" title=\"Fort Miley Hospital\" lat=\"37.7818299\"
365
+ lon=\"-122.50411\" stopId=\"135511\"/>\n<stop tag=\"3545\" title=\"32nd Ave
366
+ &amp; Balboa St\" lat=\"37.7766799\" lon=\"-122.49195\" stopId=\"13545\"/>\n<stop
367
+ tag=\"3635\" title=\"Anza St &amp; 33rd Ave\" lat=\"37.7778499\" lon=\"-122.4930299\"
368
+ stopId=\"13635\"/>\n<stop tag=\"3559\" title=\"33rd Ave &amp; Geary Blvd\" lat=\"37.7795499\"
369
+ lon=\"-122.49321\" stopId=\"13559\"/>\n<stop tag=\"4275\" title=\"Geary Blvd
370
+ &amp; 32nd Ave\" lat=\"37.77965\" lon=\"-122.4920699\" stopId=\"14275\"/>\n<stop
371
+ tag=\"4274\" title=\"Geary Blvd &amp; 30th Ave\" lat=\"37.77973\" lon=\"-122.4901899\"
372
+ stopId=\"14274\"/>\n<stop tag=\"4272\" title=\"Geary Blvd &amp; 28th Ave\" lat=\"37.7798599\"
373
+ lon=\"-122.48805\" stopId=\"14272\"/>\n<stop tag=\"4270\" title=\"Geary Blvd
374
+ &amp; 25th Ave\" lat=\"37.7799799\" lon=\"-122.48482\" stopId=\"14270\"/>\n<stop
375
+ tag=\"4268\" title=\"Geary Blvd &amp; 23rd Ave\" lat=\"37.78008\" lon=\"-122.4826899\"
376
+ stopId=\"14268\"/>\n<stop tag=\"4266\" title=\"Geary Blvd &amp; 20th Ave\" lat=\"37.7802199\"
377
+ lon=\"-122.47948\" stopId=\"14266\"/>\n<stop tag=\"4264\" title=\"Geary Blvd
378
+ &amp; 17th Ave\" lat=\"37.78037\" lon=\"-122.4762599\" stopId=\"14264\"/>\n<stop
379
+ tag=\"4756\" title=\"Geary Blvd &amp; Park Presidio Blvd\" lat=\"37.7805299\"
380
+ lon=\"-122.47268\" stopId=\"14756\"/>\n<stop tag=\"4262\" title=\"Geary Blvd
381
+ &amp; 12th Ave\" lat=\"37.7806099\" lon=\"-122.47082\" stopId=\"14262\"/>\n<stop
382
+ tag=\"4260\" title=\"Geary Blvd &amp; 9th Ave\" lat=\"37.78078\" lon=\"-122.4673199\"
383
+ stopId=\"14260\"/>\n<stop tag=\"4258\" title=\"Geary Blvd &amp; 6th Ave\" lat=\"37.7808999\"
384
+ lon=\"-122.46438\" stopId=\"14258\"/>\n<stop tag=\"4256\" title=\"Geary Blvd
385
+ &amp; 3rd Ave\" lat=\"37.78105\" lon=\"-122.4611599\" stopId=\"14256\"/>\n<stop
386
+ tag=\"4288\" title=\"Geary Blvd &amp; Arguello Blvd\" lat=\"37.7811499\" lon=\"-122.45869\"
387
+ stopId=\"14288\"/>\n<stop tag=\"4764\" title=\"Geary Blvd &amp; Stanyan St\"
388
+ lat=\"37.7812599\" lon=\"-122.45643\" stopId=\"14764\"/>\n<stop tag=\"4763\"
389
+ title=\"Geary Blvd &amp; Spruce St\" lat=\"37.7816\" lon=\"-122.4532599\" stopId=\"14763\"/>\n<stop
390
+ tag=\"4291\" title=\"Geary Blvd &amp; Collins St\" lat=\"37.78203\" lon=\"-122.4499099\"
391
+ stopId=\"14291\"/>\n<stop tag=\"4754\" title=\"Geary Blvd &amp; Masonic Ave\"
392
+ lat=\"37.78223\" lon=\"-122.4476299\" stopId=\"14754\"/>\n<stop tag=\"4759\"
393
+ title=\"Geary Blvd &amp; Presidio Ave\" lat=\"37.7823199\" lon=\"-122.44593\"
394
+ stopId=\"14759\"/>\n<stop tag=\"4765\" title=\"Geary Blvd &amp; St Joseph&apos;S
395
+ Ave\" lat=\"37.7828\" lon=\"-122.4425399\" stopId=\"14765\"/>\n<stop tag=\"4294\"
396
+ title=\"Geary Blvd &amp; Divisadero St\" lat=\"37.7831799\" lon=\"-122.43957\"
397
+ stopId=\"14294\"/>\n<stop tag=\"4761\" title=\"Geary Blvd &amp; Scott St\" lat=\"37.78362\"
398
+ lon=\"-122.4376699\" stopId=\"14761\"/>\n<stop tag=\"4296\" title=\"Geary Blvd
399
+ &amp; Fillmore St\" lat=\"37.7842599\" lon=\"-122.43331\" stopId=\"14296\"/>\n<stop
400
+ tag=\"4770\" title=\"Geary Blvd &amp; Webster St\" lat=\"37.7844899\" lon=\"-122.43135\"
401
+ stopId=\"14770\"/>\n<stop tag=\"4305\" title=\"Geary Blvd &amp; Laguna St\"
402
+ lat=\"37.78485\" lon=\"-122.4281499\" stopId=\"14305\"/>\n<stop tag=\"6425\"
403
+ title=\"Starr King Way &amp; Gough St\" lat=\"37.7850499\" lon=\"-122.4240799\"
404
+ stopId=\"16425\"/>\n<stop tag=\"5818\" title=\"O&apos;Farrell St &amp; Van Ness
405
+ Ave\" lat=\"37.7846599\" lon=\"-122.42141\" stopId=\"15818\"/>\n<stop tag=\"5813\"
406
+ title=\"O&apos;Farrell St &amp; Larkin St\" lat=\"37.78509\" lon=\"-122.4179999\"
407
+ stopId=\"15813\"/>\n<stop tag=\"5811\" title=\"O&apos;Farrell St &amp; Hyde
408
+ St\" lat=\"37.78537\" lon=\"-122.4157699\" stopId=\"15811\"/>\n<stop tag=\"5814\"
409
+ title=\"O&apos;Farrell St &amp; Leavenworth St\" lat=\"37.78554\" lon=\"-122.4144399\"
410
+ stopId=\"15814\"/>\n<stop tag=\"7301\" title=\"O&apos;Farrell St &amp; Taylor
411
+ St\" lat=\"37.7858499\" lon=\"-122.41198\" stopId=\"17301\"/>\n<stop tag=\"5817\"
412
+ title=\"O&apos;Farrell St &amp; Powell St\" lat=\"37.7863299\" lon=\"-122.40813\"
413
+ stopId=\"15817\"/>\n<stop tag=\"5810\" title=\"O&apos;Farrell St &amp; Grant
414
+ Ave\" lat=\"37.7866399\" lon=\"-122.40563\" stopId=\"15810\"/>\n<stop tag=\"5641\"
415
+ title=\"Market St &amp; 3rd St\" lat=\"37.7877099\" lon=\"-122.40321\" stopId=\"15641\"/>\n<stop
416
+ tag=\"5638\" title=\"Market St &amp; 1st St\" lat=\"37.7909\" lon=\"-122.3991399\"
417
+ stopId=\"15638\"/>\n<stop tag=\"3089\" title=\"Beale St &amp; Mission St\" lat=\"37.7917499\"
418
+ lon=\"-122.3966999\" stopId=\"13089\"/>\n<stop tag=\"7619\" title=\"Bealemst
419
+ &amp; Howard St\" lat=\"37.7896899\" lon=\"-122.39404\" stopId=\"17619\"/>\n<stop
420
+ tag=\"3608\" title=\"48th Ave &amp; Point Lobos Ave\" lat=\"37.7790199\" lon=\"-122.50941\"
421
+ stopId=\"13608\"/>\n<stop tag=\"4286\" title=\"Geary Blvd &amp; 45th Ave\" lat=\"37.7790399\"
422
+ lon=\"-122.50626\" stopId=\"14286\"/>\n<stop tag=\"4285\" title=\"Geary Blvd
423
+ &amp; 42nd Ave\" lat=\"37.77915\" lon=\"-122.5027699\" stopId=\"14285\"/>\n<stop
424
+ tag=\"4283\" title=\"Geary Blvd &amp; 39th Ave\" lat=\"37.7792899\" lon=\"-122.49983\"
425
+ stopId=\"14283\"/>\n<stop tag=\"4281\" title=\"Geary Blvd &amp; 36th Ave\" lat=\"37.77944\"
426
+ lon=\"-122.4966199\" stopId=\"14281\"/>\n<stop tag=\"4279\" title=\"Geary Blvd
427
+ &amp; 33rd Ave\" lat=\"37.7795699\" lon=\"-122.4934\" stopId=\"14279\"/>\n<stop
428
+ tag=\"15511\" title=\"Fort Miley Hospital\" lat=\"37.7818299\" lon=\"-122.50411\"
429
+ stopId=\"115511\"/>\n<stop tag=\"13567\" title=\"43rd Ave &amp; Clement St\"
430
+ lat=\"37.78101\" lon=\"-122.5042299\" stopId=\"113567\"/>\n<stop tag=\"13568\"
431
+ title=\"43rd Ave &amp; Point Lobos Ave\" lat=\"37.7797799\" lon=\"-122.5041399\"
432
+ stopId=\"113568\"/>\n<direction tag=\"38_IB3\" title=\"Inbound to Downtown\"
433
+ name=\"Inbound\" useForUI=\"true\">\n <stop tag=\"15511\" />\n <stop tag=\"13567\"
434
+ />\n <stop tag=\"13568\" />\n <stop tag=\"4285\" />\n <stop tag=\"4283\"
435
+ />\n <stop tag=\"4281\" />\n <stop tag=\"4279\" />\n <stop tag=\"4275\" />\n
436
+ \ <stop tag=\"4274\" />\n <stop tag=\"4272\" />\n <stop tag=\"4270\" />\n
437
+ \ <stop tag=\"4268\" />\n <stop tag=\"4266\" />\n <stop tag=\"4264\" />\n
438
+ \ <stop tag=\"4756\" />\n <stop tag=\"4262\" />\n <stop tag=\"4260\" />\n
439
+ \ <stop tag=\"4258\" />\n <stop tag=\"4256\" />\n <stop tag=\"4288\" />\n
440
+ \ <stop tag=\"4764\" />\n <stop tag=\"4763\" />\n <stop tag=\"4291\" />\n
441
+ \ <stop tag=\"4754\" />\n <stop tag=\"4759\" />\n <stop tag=\"4765\" />\n
442
+ \ <stop tag=\"4294\" />\n <stop tag=\"4761\" />\n <stop tag=\"4296\" />\n
443
+ \ <stop tag=\"4770\" />\n <stop tag=\"4305\" />\n <stop tag=\"6425\" />\n
444
+ \ <stop tag=\"5818\" />\n <stop tag=\"5813\" />\n <stop tag=\"5811\" />\n
445
+ \ <stop tag=\"5814\" />\n <stop tag=\"7301\" />\n <stop tag=\"5817\" />\n
446
+ \ <stop tag=\"5810\" />\n <stop tag=\"5641\" />\n <stop tag=\"5638\" />\n
447
+ \ <stop tag=\"3089\" />\n <stop tag=\"7619\" />\n</direction>\n<direction tag=\"38_IB2\"
448
+ title=\"Inbound to Downtown\" name=\"Inbound\" useForUI=\"true\">\n <stop tag=\"3608\"
449
+ />\n <stop tag=\"4286\" />\n <stop tag=\"4285\" />\n <stop tag=\"4283\" />\n
450
+ \ <stop tag=\"4281\" />\n <stop tag=\"4279\" />\n <stop tag=\"4275\" />\n
451
+ \ <stop tag=\"4274\" />\n <stop tag=\"4272\" />\n <stop tag=\"4270\" />\n
452
+ \ <stop tag=\"4268\" />\n <stop tag=\"4266\" />\n <stop tag=\"4264\" />\n
453
+ \ <stop tag=\"4756\" />\n <stop tag=\"4262\" />\n <stop tag=\"4260\" />\n
454
+ \ <stop tag=\"4258\" />\n <stop tag=\"4256\" />\n <stop tag=\"4288\" />\n
455
+ \ <stop tag=\"4764\" />\n <stop tag=\"4763\" />\n <stop tag=\"4291\" />\n
456
+ \ <stop tag=\"4754\" />\n <stop tag=\"4759\" />\n <stop tag=\"4765\" />\n
457
+ \ <stop tag=\"4294\" />\n <stop tag=\"4761\" />\n <stop tag=\"4296\" />\n
458
+ \ <stop tag=\"4770\" />\n <stop tag=\"4305\" />\n <stop tag=\"6425\" />\n
459
+ \ <stop tag=\"5818\" />\n <stop tag=\"5813\" />\n <stop tag=\"5811\" />\n
460
+ \ <stop tag=\"5814\" />\n <stop tag=\"7301\" />\n <stop tag=\"5817\" />\n
461
+ \ <stop tag=\"5810\" />\n <stop tag=\"5641\" />\n <stop tag=\"5638\" />\n
462
+ \ <stop tag=\"3089\" />\n <stop tag=\"7619\" />\n</direction>\n<direction tag=\"38_IB1\"
463
+ title=\"Inbound to Downtown\" name=\"Inbound\" useForUI=\"true\">\n <stop tag=\"3545\"
464
+ />\n <stop tag=\"3635\" />\n <stop tag=\"3559\" />\n <stop tag=\"4275\" />\n
465
+ \ <stop tag=\"4274\" />\n <stop tag=\"4272\" />\n <stop tag=\"4270\" />\n
466
+ \ <stop tag=\"4268\" />\n <stop tag=\"4266\" />\n <stop tag=\"4264\" />\n
467
+ \ <stop tag=\"4756\" />\n <stop tag=\"4262\" />\n <stop tag=\"4260\" />\n
468
+ \ <stop tag=\"4258\" />\n <stop tag=\"4256\" />\n <stop tag=\"4288\" />\n
469
+ \ <stop tag=\"4764\" />\n <stop tag=\"4763\" />\n <stop tag=\"4291\" />\n
470
+ \ <stop tag=\"4754\" />\n <stop tag=\"4759\" />\n <stop tag=\"4765\" />\n
471
+ \ <stop tag=\"4294\" />\n <stop tag=\"4761\" />\n <stop tag=\"4296\" />\n
472
+ \ <stop tag=\"4770\" />\n <stop tag=\"4305\" />\n <stop tag=\"6425\" />\n
473
+ \ <stop tag=\"5818\" />\n <stop tag=\"5813\" />\n <stop tag=\"5811\" />\n
474
+ \ <stop tag=\"5814\" />\n <stop tag=\"7301\" />\n <stop tag=\"5817\" />\n
475
+ \ <stop tag=\"5810\" />\n <stop tag=\"5641\" />\n <stop tag=\"5638\" />\n
476
+ \ <stop tag=\"3089\" />\n <stop tag=\"7619\" />\n</direction>\n<direction tag=\"38_OB3\"
477
+ title=\"Outbound to the Richmond District\" name=\"Outbound\" useForUI=\"true\">\n
478
+ \ <stop tag=\"7620\" />\n <stop tag=\"5579\" />\n <stop tag=\"4725\" />\n
479
+ \ <stop tag=\"5689\" />\n <stop tag=\"5684\" />\n <stop tag=\"4301\" />\n
480
+ \ <stop tag=\"4766\" />\n <stop tag=\"4757\" />\n <stop tag=\"4767\" />\n
481
+ \ <stop tag=\"4300\" />\n <stop tag=\"4303\" />\n <stop tag=\"4299\" />\n
482
+ \ <stop tag=\"4302\" />\n <stop tag=\"4768\" />\n <stop tag=\"4297\" />\n
483
+ \ <stop tag=\"4298\" />\n <stop tag=\"4304\" />\n <stop tag=\"4769\" />\n
484
+ \ <stop tag=\"4295\" />\n <stop tag=\"4760\" />\n <stop tag=\"4293\" />\n
485
+ \ <stop tag=\"4289\" />\n <stop tag=\"4758\" />\n <stop tag=\"4290\" />\n
486
+ \ <stop tag=\"4762\" />\n <stop tag=\"4292\" />\n <stop tag=\"4287\" />\n
487
+ \ <stop tag=\"4255\" />\n <stop tag=\"4257\" />\n <stop tag=\"4259\" />\n
488
+ \ <stop tag=\"4261\" />\n <stop tag=\"4755\" />\n <stop tag=\"4263\" />\n
489
+ \ <stop tag=\"4265\" />\n <stop tag=\"4267\" />\n <stop tag=\"4269\" />\n
490
+ \ <stop tag=\"4271\" />\n <stop tag=\"4273\" />\n <stop tag=\"4278\" />\n
491
+ \ <stop tag=\"4280\" />\n <stop tag=\"4282\" />\n <stop tag=\"6109\" />\n
492
+ \ <stop tag=\"3566\" />\n <stop tag=\"5511\" />\n <stop tag=\"3567\" />\n
493
+ \ <stop tag=\"3568\" />\n <stop tag=\"6111\" />\n <stop tag=\"6129\" />\n
494
+ \ <stop tag=\"33608\" />\n</direction>\n<path>\n<point lat=\"37.78771\" lon=\"-122.40321\"/>\n<point
495
+ lat=\"37.7909\" lon=\"-122.39914\"/>\n<point lat=\"37.7924099\" lon=\"-122.39738\"/>\n<point
496
+ lat=\"37.79175\" lon=\"-122.3967\"/>\n<point lat=\"37.78993\" lon=\"-122.39428\"/>\n<point
497
+ lat=\"37.78969\" lon=\"-122.39404\"/>\n</path>\n<path>\n<point lat=\"37.78584\"
498
+ lon=\"-122.42063\"/>\n<point lat=\"37.78557\" lon=\"-122.42289\"/>\n<point lat=\"37.78541\"
499
+ lon=\"-122.42355\"/>\n<point lat=\"37.7854\" lon=\"-122.42444\"/>\n<point lat=\"37.78543\"
500
+ lon=\"-122.42508\"/>\n<point lat=\"37.78503\" lon=\"-122.42781\"/>\n<point lat=\"37.78464\"
501
+ lon=\"-122.43102\"/>\n<point lat=\"37.78439\" lon=\"-122.43305\"/>\n</path>\n<path>\n<point
502
+ lat=\"37.78053\" lon=\"-122.47268\"/>\n<point lat=\"37.78061\" lon=\"-122.47082\"/>\n<point
503
+ lat=\"37.78078\" lon=\"-122.46732\"/>\n<point lat=\"37.7809\" lon=\"-122.46438\"/>\n<point
504
+ lat=\"37.78105\" lon=\"-122.46116\"/>\n<point lat=\"37.7811499\" lon=\"-122.45869\"/>\n<point
505
+ lat=\"37.78126\" lon=\"-122.45643\"/>\n<point lat=\"37.7816\" lon=\"-122.45326\"/>\n<point
506
+ lat=\"37.78203\" lon=\"-122.44991\"/>\n<point lat=\"37.78229\" lon=\"-122.44789\"/>\n<point
507
+ lat=\"37.78223\" lon=\"-122.44763\"/>\n<point lat=\"37.7822699\" lon=\"-122.44754\"/>\n<point
508
+ lat=\"37.78222\" lon=\"-122.44723\"/>\n<point lat=\"37.78232\" lon=\"-122.44593\"/>\n</path>\n<path>\n<point
509
+ lat=\"37.78069\" lon=\"-122.47242\"/>\n<point lat=\"37.7806\" lon=\"-122.47604\"/>\n<point
510
+ lat=\"37.78045\" lon=\"-122.47927\"/>\n<point lat=\"37.78035\" lon=\"-122.4814\"/>\n<point
511
+ lat=\"37.78022\" lon=\"-122.48461\"/>\n<point lat=\"37.78001\" lon=\"-122.48781\"/>\n<point
512
+ lat=\"37.77996\" lon=\"-122.48997\"/>\n<point lat=\"37.7798\" lon=\"-122.49344\"/>\n</path>\n<path>\n<point
513
+ lat=\"37.78849\" lon=\"-122.40248\"/>\n<point lat=\"37.7880899\" lon=\"-122.4029\"/>\n<point
514
+ lat=\"37.78796\" lon=\"-122.40349\"/>\n<point lat=\"37.7879999\" lon=\"-122.40366\"/>\n<point
515
+ lat=\"37.78764\" lon=\"-122.40649\"/>\n<point lat=\"37.7874\" lon=\"-122.40839\"/>\n</path>\n<path>\n<point
516
+ lat=\"37.78426\" lon=\"-122.43331\"/>\n<point lat=\"37.78449\" lon=\"-122.43135\"/>\n<point
517
+ lat=\"37.78485\" lon=\"-122.42815\"/>\n<point lat=\"37.78534\" lon=\"-122.42469\"/>\n<point
518
+ lat=\"37.78519\" lon=\"-122.42417\"/>\n<point lat=\"37.78505\" lon=\"-122.42408\"/>\n<point
519
+ lat=\"37.7849999\" lon=\"-122.42387\"/>\n<point lat=\"37.78477\" lon=\"-122.42361\"/>\n<point
520
+ lat=\"37.7846199\" lon=\"-122.42332\"/>\n<point lat=\"37.78455\" lon=\"-122.42304\"/>\n<point
521
+ lat=\"37.78466\" lon=\"-122.42141\"/>\n</path>\n<path>\n<point lat=\"37.79055\"
522
+ lon=\"-122.3933\"/>\n<point lat=\"37.79184\" lon=\"-122.39494\"/>\n<point lat=\"37.79114\"
523
+ lon=\"-122.39592\"/>\n<point lat=\"37.79046\" lon=\"-122.39669\"/>\n<point lat=\"37.79165\"
524
+ lon=\"-122.39815\"/>\n<point lat=\"37.79172\" lon=\"-122.39826\"/>\n<point lat=\"37.79016\"
525
+ lon=\"-122.40041\"/>\n<point lat=\"37.78849\" lon=\"-122.40248\"/>\n</path>\n<path>\n<point
526
+ lat=\"37.78466\" lon=\"-122.42141\"/>\n<point lat=\"37.7850899\" lon=\"-122.418\"/>\n<point
527
+ lat=\"37.78537\" lon=\"-122.41577\"/>\n<point lat=\"37.78554\" lon=\"-122.41444\"/>\n<point
528
+ lat=\"37.78585\" lon=\"-122.41198\"/>\n<point lat=\"37.78633\" lon=\"-122.40813\"/>\n</path>\n<path>\n<point
529
+ lat=\"37.78251\" lon=\"-122.4468\"/>\n<point lat=\"37.78239\" lon=\"-122.4473\"/>\n<point
530
+ lat=\"37.78248\" lon=\"-122.44806\"/>\n<point lat=\"37.78224\" lon=\"-122.44999\"/>\n<point
531
+ lat=\"37.78185\" lon=\"-122.45307\"/>\n<point lat=\"37.7815299\" lon=\"-122.45568\"/>\n<point
532
+ lat=\"37.78138\" lon=\"-122.45874\"/>\n<point lat=\"37.78128\" lon=\"-122.46094\"/>\n<point
533
+ lat=\"37.78113\" lon=\"-122.46416\"/>\n<point lat=\"37.78098\" lon=\"-122.46764\"/>\n<point
534
+ lat=\"37.78084\" lon=\"-122.4706\"/>\n<point lat=\"37.78069\" lon=\"-122.47242\"/>\n</path>\n<path>\n<point
535
+ lat=\"37.78232\" lon=\"-122.44593\"/>\n<point lat=\"37.7828\" lon=\"-122.44254\"/>\n<point
536
+ lat=\"37.78318\" lon=\"-122.43957\"/>\n<point lat=\"37.78343\" lon=\"-122.43864\"/>\n<point
537
+ lat=\"37.78367\" lon=\"-122.43803\"/>\n<point lat=\"37.78362\" lon=\"-122.43767\"/>\n<point
538
+ lat=\"37.78426\" lon=\"-122.43331\"/>\n</path>\n<path>\n<point lat=\"37.78633\"
539
+ lon=\"-122.40813\"/>\n<point lat=\"37.78664\" lon=\"-122.40563\"/>\n<point lat=\"37.78681\"
540
+ lon=\"-122.40485\"/>\n<point lat=\"37.78673\" lon=\"-122.40458\"/>\n<point lat=\"37.78771\"
541
+ lon=\"-122.40321\"/>\n</path>\n<path>\n<point lat=\"37.7874\" lon=\"-122.40839\"/>\n<point
542
+ lat=\"37.78698\" lon=\"-122.41168\"/>\n<point lat=\"37.78677\" lon=\"-122.41333\"/>\n<point
543
+ lat=\"37.78656\" lon=\"-122.41497\"/>\n<point lat=\"37.78635\" lon=\"-122.41661\"/>\n<point
544
+ lat=\"37.78614\" lon=\"-122.41825\"/>\n<point lat=\"37.78584\" lon=\"-122.42063\"/>\n</path>\n<path>\n<point
545
+ lat=\"37.78183\" lon=\"-122.50411\"/>\n<point lat=\"37.78197\" lon=\"-122.50458\"/>\n<point
546
+ lat=\"37.78202\" lon=\"-122.50492\"/>\n<point lat=\"37.78208\" lon=\"-122.50711\"/>\n<point
547
+ lat=\"37.78216\" lon=\"-122.50738\"/>\n<point lat=\"37.78195\" lon=\"-122.5076\"/>\n<point
548
+ lat=\"37.78173\" lon=\"-122.50739\"/>\n<point lat=\"37.78159\" lon=\"-122.50708\"/>\n<point
549
+ lat=\"37.7815299\" lon=\"-122.5067\"/>\n<point lat=\"37.78159\" lon=\"-122.50634\"/>\n<point
550
+ lat=\"37.7816\" lon=\"-122.506\"/>\n<point lat=\"37.78143\" lon=\"-122.5057\"/>\n<point
551
+ lat=\"37.78132\" lon=\"-122.50439\"/>\n<point lat=\"37.78113\" lon=\"-122.50416\"/>\n<point
552
+ lat=\"37.78101\" lon=\"-122.50423\"/>\n<point lat=\"37.77978\" lon=\"-122.50414\"/>\n<point
553
+ lat=\"37.77971\" lon=\"-122.50406\"/>\n<point lat=\"37.77984\" lon=\"-122.50501\"/>\n<point
554
+ lat=\"37.77998\" lon=\"-122.5073\"/>\n<point lat=\"37.78004\" lon=\"-122.50744\"/>\n<point
555
+ lat=\"37.77985\" lon=\"-122.50943\"/>\n<point lat=\"37.77902\" lon=\"-122.50941\"/>\n</path>\n<path>\n<point
556
+ lat=\"37.78069\" lon=\"-122.47242\"/>\n<point lat=\"37.7806\" lon=\"-122.47604\"/>\n<point
557
+ lat=\"37.78045\" lon=\"-122.47927\"/>\n<point lat=\"37.78035\" lon=\"-122.4814\"/>\n<point
558
+ lat=\"37.78022\" lon=\"-122.48461\"/>\n<point lat=\"37.78001\" lon=\"-122.48781\"/>\n<point
559
+ lat=\"37.77996\" lon=\"-122.48997\"/>\n<point lat=\"37.77969\" lon=\"-122.4933\"/>\n<point
560
+ lat=\"37.77957\" lon=\"-122.49338\"/>\n</path>\n<path>\n<point lat=\"37.78439\"
561
+ lon=\"-122.43305\"/>\n<point lat=\"37.78385\" lon=\"-122.43776\"/>\n<point lat=\"37.78372\"
562
+ lon=\"-122.43785\"/>\n<point lat=\"37.78343\" lon=\"-122.43864\"/>\n<point lat=\"37.78343\"
563
+ lon=\"-122.43937\"/>\n<point lat=\"37.78297\" lon=\"-122.44296\"/>\n<point lat=\"37.78251\"
564
+ lon=\"-122.4468\"/>\n</path>\n<path>\n<point lat=\"37.7798\" lon=\"-122.49344\"/>\n<point
565
+ lat=\"37.77967\" lon=\"-122.4964\"/>\n<point lat=\"37.77947\" lon=\"-122.50068\"/>\n<point
566
+ lat=\"37.77935\" lon=\"-122.5008\"/>\n<point lat=\"37.7796499\" lon=\"-122.50285\"/>\n<point
567
+ lat=\"37.77961\" lon=\"-122.50297\"/>\n<point lat=\"37.78109\" lon=\"-122.50299\"/>\n<point
568
+ lat=\"37.78118\" lon=\"-122.50309\"/>\n<point lat=\"37.78139\" lon=\"-122.5032\"/>\n<point
569
+ lat=\"37.78148\" lon=\"-122.50357\"/>\n<point lat=\"37.78183\" lon=\"-122.50411\"/>\n</path>\n<path>\n<point
570
+ lat=\"37.77955\" lon=\"-122.49321\"/>\n<point lat=\"37.77969\" lon=\"-122.4933\"/>\n<point
571
+ lat=\"37.7796499\" lon=\"-122.49207\"/>\n<point lat=\"37.77973\" lon=\"-122.49019\"/>\n<point
572
+ lat=\"37.77986\" lon=\"-122.48805\"/>\n<point lat=\"37.77998\" lon=\"-122.48482\"/>\n<point
573
+ lat=\"37.78008\" lon=\"-122.48269\"/>\n<point lat=\"37.78022\" lon=\"-122.47948\"/>\n<point
574
+ lat=\"37.78037\" lon=\"-122.47626\"/>\n<point lat=\"37.78053\" lon=\"-122.47268\"/>\n</path>\n<path>\n<point
575
+ lat=\"37.78183\" lon=\"-122.50411\"/>\n<point lat=\"37.78197\" lon=\"-122.50458\"/>\n<point
576
+ lat=\"37.78202\" lon=\"-122.50492\"/>\n<point lat=\"37.78208\" lon=\"-122.50711\"/>\n<point
577
+ lat=\"37.78216\" lon=\"-122.50738\"/>\n<point lat=\"37.78195\" lon=\"-122.5076\"/>\n<point
578
+ lat=\"37.78173\" lon=\"-122.50739\"/>\n<point lat=\"37.78159\" lon=\"-122.50708\"/>\n<point
579
+ lat=\"37.7815299\" lon=\"-122.5067\"/>\n<point lat=\"37.78159\" lon=\"-122.50634\"/>\n<point
580
+ lat=\"37.7816\" lon=\"-122.506\"/>\n<point lat=\"37.78143\" lon=\"-122.5057\"/>\n<point
581
+ lat=\"37.78132\" lon=\"-122.50439\"/>\n<point lat=\"37.78113\" lon=\"-122.50416\"/>\n<point
582
+ lat=\"37.78101\" lon=\"-122.50423\"/>\n<point lat=\"37.77978\" lon=\"-122.50414\"/>\n<point
583
+ lat=\"37.77921\" lon=\"-122.50402\"/>\n<point lat=\"37.77915\" lon=\"-122.50277\"/>\n<point
584
+ lat=\"37.77929\" lon=\"-122.49983\"/>\n<point lat=\"37.77944\" lon=\"-122.49662\"/>\n<point
585
+ lat=\"37.77957\" lon=\"-122.4934\"/>\n</path>\n<path>\n<point lat=\"37.77668\"
586
+ lon=\"-122.49195\"/>\n<point lat=\"37.77782\" lon=\"-122.49209\"/>\n<point lat=\"37.77785\"
587
+ lon=\"-122.49303\"/>\n<point lat=\"37.7777699\" lon=\"-122.49317\"/>\n<point
588
+ lat=\"37.77955\" lon=\"-122.49321\"/>\n</path>\n<path>\n<point lat=\"37.7798\"
589
+ lon=\"-122.49344\"/>\n<point lat=\"37.77967\" lon=\"-122.4964\"/>\n<point lat=\"37.77947\"
590
+ lon=\"-122.50068\"/>\n<point lat=\"37.77935\" lon=\"-122.5008\"/>\n<point lat=\"37.7796499\"
591
+ lon=\"-122.50285\"/>\n<point lat=\"37.77984\" lon=\"-122.50501\"/>\n<point lat=\"37.77998\"
592
+ lon=\"-122.5073\"/>\n<point lat=\"37.78004\" lon=\"-122.50744\"/>\n<point lat=\"37.77985\"
593
+ lon=\"-122.50943\"/>\n<point lat=\"37.77902\" lon=\"-122.50941\"/>\n</path>\n<path>\n<point
594
+ lat=\"37.77902\" lon=\"-122.50941\"/>\n<point lat=\"37.77904\" lon=\"-122.50626\"/>\n<point
595
+ lat=\"37.77915\" lon=\"-122.50277\"/>\n<point lat=\"37.77929\" lon=\"-122.49983\"/>\n<point
596
+ lat=\"37.77944\" lon=\"-122.49662\"/>\n<point lat=\"37.77957\" lon=\"-122.4934\"/>\n</path>\n<path>\n<point
597
+ lat=\"37.77957\" lon=\"-122.49338\"/>\n<point lat=\"37.7778599\" lon=\"-122.49325\"/>\n<point
598
+ lat=\"37.776\" lon=\"-122.49313\"/>\n<point lat=\"37.77591\" lon=\"-122.49304\"/>\n<point
599
+ lat=\"37.77668\" lon=\"-122.49195\"/>\n</path>\n<path>\n<point lat=\"37.77957\"
600
+ lon=\"-122.4934\"/>\n<point lat=\"37.7796499\" lon=\"-122.49207\"/>\n<point
601
+ lat=\"37.77973\" lon=\"-122.49019\"/>\n<point lat=\"37.77986\" lon=\"-122.48805\"/>\n<point
602
+ lat=\"37.77998\" lon=\"-122.48482\"/>\n<point lat=\"37.78008\" lon=\"-122.48269\"/>\n<point
603
+ lat=\"37.78022\" lon=\"-122.47948\"/>\n<point lat=\"37.78037\" lon=\"-122.47626\"/>\n<point
604
+ lat=\"37.78053\" lon=\"-122.47268\"/>\n</path>\n</route>\n</body>\n"
605
+ http_version:
606
+ recorded_at: Tue, 04 Dec 2012 17:07:01 GMT
607
+ - request:
608
+ method: get
609
+ uri: http://webservices.nextbus.com/service/publicXMLFeed?a=sf-muni&command=predictions&d=38_IB3&r=38&s=15511
610
+ body: ''
611
+ headers:
612
+ Accept:
613
+ - ! '*/*'
614
+ User-Agent:
615
+ - Ruby
616
+ response:
617
+ status:
618
+ code: 200
619
+ message: OK
620
+ headers:
621
+ Date:
622
+ - Tue, 04 Dec 2012 17:07:01 GMT
623
+ Server:
624
+ - Apache/2.2.4 (Unix) mod_ssl/2.2.4 OpenSSL/0.9.7m DAV/2 mod_jk/1.2.30
625
+ Access-Control-Allow-Origin:
626
+ - ! '*'
627
+ Content-Length:
628
+ - '1335'
629
+ Vary:
630
+ - Accept-Encoding
631
+ Content-Type:
632
+ - text/xml
633
+ body: ! "<?xml version=\"1.0\" encoding=\"utf-8\" ?> \n<body copyright=\"All data
634
+ copyright San Francisco Muni 2012.\">\n<predictions agencyTitle=\"San Francisco
635
+ Muni\" routeTitle=\"38-Geary\" routeTag=\"38\" stopTitle=\"Fort Miley Hospital\"
636
+ stopTag=\"15511\">\n <direction title=\"Inbound to Downtown\">\n <prediction
637
+ epochTime=\"1354641000000\" seconds=\"178\" minutes=\"2\" isDeparture=\"true\"
638
+ affectedByLayover=\"true\" dirTag=\"38_IB3\" vehicle=\"6237\" block=\"3811\"
639
+ tripTag=\"5234655\" />\n <prediction epochTime=\"1354641900000\" seconds=\"1078\"
640
+ minutes=\"17\" isDeparture=\"true\" affectedByLayover=\"true\" dirTag=\"38_IB3\"
641
+ vehicle=\"6408\" block=\"3813\" tripTag=\"5234657\" />\n <prediction epochTime=\"1354642860000\"
642
+ seconds=\"2038\" minutes=\"33\" isDeparture=\"true\" affectedByLayover=\"true\"
643
+ dirTag=\"38_IB3\" vehicle=\"6414\" block=\"3801\" tripTag=\"5234659\" />\n <prediction
644
+ epochTime=\"1354643820000\" seconds=\"2998\" minutes=\"49\" isDeparture=\"true\"
645
+ affectedByLayover=\"true\" dirTag=\"38_IB3\" vehicle=\"6240\" block=\"3802\"
646
+ tripTag=\"5234661\" />\n <prediction epochTime=\"1354644780000\" seconds=\"3958\"
647
+ minutes=\"65\" isDeparture=\"true\" affectedByLayover=\"true\" dirTag=\"38_IB3\"
648
+ vehicle=\"6269\" block=\"3817\" tripTag=\"5234662\" />\n </direction>\n<message
649
+ text=\"sfmta.com or 3 1 1 for Muni info\"/>\n<message text=\"PROOF OF PAYMENT
650
+ is required when on a Muni vehicle or in a station\"/>\n</predictions>\n</body>\n"
651
+ http_version:
652
+ recorded_at: Tue, 04 Dec 2012 17:07:02 GMT
653
+ - request:
654
+ method: get
655
+ uri: http://webservices.nextbus.com/service/publicXMLFeed?a=sf-muni&command=predictions&d=38_IB3&r=38&s=15511
656
+ body: ''
657
+ headers:
658
+ Accept:
659
+ - ! '*/*'
660
+ User-Agent:
661
+ - Ruby
662
+ response:
663
+ status:
664
+ code: 200
665
+ message: OK
666
+ headers:
667
+ Date:
668
+ - Tue, 04 Dec 2012 17:07:01 GMT
669
+ Server:
670
+ - Apache/2.2.4 (Unix) mod_ssl/2.2.4 OpenSSL/0.9.7m DAV/2 mod_jk/1.2.30
671
+ Access-Control-Allow-Origin:
672
+ - ! '*'
673
+ Content-Length:
674
+ - '1335'
675
+ Vary:
676
+ - Accept-Encoding
677
+ Content-Type:
678
+ - text/xml
679
+ body: ! "<?xml version=\"1.0\" encoding=\"utf-8\" ?> \n<body copyright=\"All data
680
+ copyright San Francisco Muni 2012.\">\n<predictions agencyTitle=\"San Francisco
681
+ Muni\" routeTitle=\"38-Geary\" routeTag=\"38\" stopTitle=\"Fort Miley Hospital\"
682
+ stopTag=\"15511\">\n <direction title=\"Inbound to Downtown\">\n <prediction
683
+ epochTime=\"1354641000000\" seconds=\"178\" minutes=\"2\" isDeparture=\"true\"
684
+ affectedByLayover=\"true\" dirTag=\"38_IB3\" vehicle=\"6237\" block=\"3811\"
685
+ tripTag=\"5234655\" />\n <prediction epochTime=\"1354641900000\" seconds=\"1078\"
686
+ minutes=\"17\" isDeparture=\"true\" affectedByLayover=\"true\" dirTag=\"38_IB3\"
687
+ vehicle=\"6408\" block=\"3813\" tripTag=\"5234657\" />\n <prediction epochTime=\"1354642860000\"
688
+ seconds=\"2038\" minutes=\"33\" isDeparture=\"true\" affectedByLayover=\"true\"
689
+ dirTag=\"38_IB3\" vehicle=\"6414\" block=\"3801\" tripTag=\"5234659\" />\n <prediction
690
+ epochTime=\"1354643820000\" seconds=\"2998\" minutes=\"49\" isDeparture=\"true\"
691
+ affectedByLayover=\"true\" dirTag=\"38_IB3\" vehicle=\"6240\" block=\"3802\"
692
+ tripTag=\"5234661\" />\n <prediction epochTime=\"1354644780000\" seconds=\"3958\"
693
+ minutes=\"65\" isDeparture=\"true\" affectedByLayover=\"true\" dirTag=\"38_IB3\"
694
+ vehicle=\"6269\" block=\"3817\" tripTag=\"5234662\" />\n </direction>\n<message
695
+ text=\"sfmta.com or 3 1 1 for Muni info\"/>\n<message text=\"PROOF OF PAYMENT
696
+ is required when on a Muni vehicle or in a station\"/>\n</predictions>\n</body>\n"
697
+ http_version:
698
+ recorded_at: Tue, 04 Dec 2012 17:07:02 GMT
699
+ - request:
700
+ method: get
701
+ uri: http://webservices.nextbus.com/service/publicXMLFeed?a=sf-muni&command=predictions&d=38_OB3&r=38&s=7620
702
+ body: ''
703
+ headers:
704
+ Accept:
705
+ - ! '*/*'
706
+ User-Agent:
707
+ - Ruby
708
+ response:
709
+ status:
710
+ code: 200
711
+ message: OK
712
+ headers:
713
+ Date:
714
+ - Tue, 04 Dec 2012 17:07:02 GMT
715
+ Server:
716
+ - Apache/2.2.4 (Unix) mod_ssl/2.2.4 OpenSSL/0.9.7m DAV/2 mod_jk/1.2.30
717
+ Access-Control-Allow-Origin:
718
+ - ! '*'
719
+ Content-Length:
720
+ - '1348'
721
+ Vary:
722
+ - Accept-Encoding
723
+ Content-Type:
724
+ - text/xml
725
+ body: ! "<?xml version=\"1.0\" encoding=\"utf-8\" ?> \n<body copyright=\"All data
726
+ copyright San Francisco Muni 2012.\">\n<predictions agencyTitle=\"San Francisco
727
+ Muni\" routeTitle=\"38-Geary\" routeTag=\"38\" stopTitle=\"Main St &amp; Howard
728
+ St\" stopTag=\"7620\">\n <direction title=\"Outbound to the Richmond District\">\n
729
+ \ <prediction epochTime=\"1354640900428\" seconds=\"78\" minutes=\"1\" isDeparture=\"true\"
730
+ affectedByLayover=\"true\" dirTag=\"38_OB2\" vehicle=\"6232\" block=\"3818\"
731
+ tripTag=\"5234445\" />\n <prediction epochTime=\"1354641240000\" seconds=\"417\"
732
+ minutes=\"6\" isDeparture=\"true\" affectedByLayover=\"true\" dirTag=\"38_OB4\"
733
+ vehicle=\"6405\" block=\"3804\" tripTag=\"5234446\" />\n <prediction epochTime=\"1354641720000\"
734
+ seconds=\"897\" minutes=\"14\" isDeparture=\"true\" affectedByLayover=\"true\"
735
+ dirTag=\"38_OB2\" vehicle=\"6273\" block=\"3806\" tripTag=\"5234447\" />\n <prediction
736
+ epochTime=\"1354642200000\" seconds=\"1377\" minutes=\"22\" isDeparture=\"true\"
737
+ affectedByLayover=\"true\" dirTag=\"38_OB4\" vehicle=\"6401\" block=\"3805\"
738
+ tripTag=\"5234448\" />\n <prediction epochTime=\"1354642620000\" seconds=\"1797\"
739
+ minutes=\"29\" isDeparture=\"true\" affectedByLayover=\"true\" dirTag=\"38_OB2\"
740
+ vehicle=\"6410\" block=\"3808\" tripTag=\"5234449\" />\n </direction>\n<message
741
+ text=\"sfmta.com or 3 1 1 for Muni info\"/>\n<message text=\"PROOF OF PAYMENT
742
+ is required when on a Muni vehicle or in a station\"/>\n</predictions>\n</body>\n"
743
+ http_version:
744
+ recorded_at: Tue, 04 Dec 2012 17:07:03 GMT
263
745
  recorded_with: VCR 2.0.0.rc1
@@ -1,7 +1,7 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe Muni::Stop do
4
- use_vcr_cassette
4
+ use_vcr_cassette "Muni_Route"
5
5
  context '#predictions' do
6
6
  it 'fetches predictions' do
7
7
  route = Muni::Route.find("38")
@@ -15,5 +15,12 @@ describe Muni::Stop do
15
15
  route = Muni::Route.find("38")
16
16
  route.inbound.stops.first.predictions.should == []
17
17
  end
18
+
19
+ it 'should return an empty array if there are no predictions' do
20
+ stop = Muni::Route.find("38").outbound.stops.first
21
+ Muni::Stop.stub(:send) { nil }
22
+ stop.predictions.should == []
23
+ end
24
+
18
25
  end
19
26
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: muni
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,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-11-26 00:00:00.000000000 Z
12
+ date: 2012-12-04 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: xml-simple
@@ -152,7 +152,6 @@ files:
152
152
  - man/muni.1.ronn
153
153
  - muni.gemspec
154
154
  - spec/cassettes/Muni_Route.yml
155
- - spec/cassettes/Muni_Stop.yml
156
155
  - spec/direction_spec.rb
157
156
  - spec/route_spec.rb
158
157
  - spec/spec_helper.rb
@@ -183,7 +182,6 @@ specification_version: 3
183
182
  summary: NextBus San Francisco Muni API Client
184
183
  test_files:
185
184
  - spec/cassettes/Muni_Route.yml
186
- - spec/cassettes/Muni_Stop.yml
187
185
  - spec/direction_spec.rb
188
186
  - spec/route_spec.rb
189
187
  - spec/spec_helper.rb
@@ -1,439 +0,0 @@
1
- ---
2
- http_interactions:
3
- - request:
4
- method: get
5
- uri: http://webservices.nextbus.com/service/publicXMLFeed?a=sf-muni&command=routeConfig&r=38
6
- body: ''
7
- headers:
8
- Accept:
9
- - ! '*/*'
10
- User-Agent:
11
- - Ruby
12
- response:
13
- status:
14
- code: 200
15
- message: OK
16
- headers:
17
- Date:
18
- - Wed, 21 Nov 2012 18:02:16 GMT
19
- Server:
20
- - Apache/2.2.4 (Unix) mod_ssl/2.2.4 OpenSSL/0.9.7m DAV/2 mod_jk/1.2.30
21
- Access-Control-Allow-Origin:
22
- - ! '*'
23
- Vary:
24
- - Accept-Encoding
25
- Transfer-Encoding:
26
- - chunked
27
- Content-Type:
28
- - text/xml
29
- body: ! "<?xml version=\"1.0\" encoding=\"utf-8\" ?> \n<body copyright=\"All data
30
- copyright San Francisco Muni 2012.\">\n<route tag=\"38\" title=\"38-Geary\"
31
- color=\"ff6633\" oppositeColor=\"000000\" latMin=\"37.7759999\" latMax=\"37.7917499\"
32
- lonMin=\"-122.50941\" lonMax=\"-122.3933\">\n<stop tag=\"7620\" title=\"Main
33
- St &amp; Howard St\" lat=\"37.7905499\" lon=\"-122.3933\" stopId=\"17620\"/>\n<stop
34
- tag=\"5579\" title=\"Mission St &amp; Beale St\" lat=\"37.7911399\" lon=\"-122.39592\"
35
- stopId=\"15579\"/>\n<stop tag=\"4725\" title=\"Fremont St &amp; Market St\"
36
- lat=\"37.7916499\" lon=\"-122.3981499\" stopId=\"14725\"/>\n<stop tag=\"5689\"
37
- title=\"Market St &amp; Sansome St\" lat=\"37.79016\" lon=\"-122.4004099\" stopId=\"15689\"/>\n<stop
38
- tag=\"5684\" title=\"Market St &amp; Montgomery St\" lat=\"37.7884899\" lon=\"-122.40248\"
39
- stopId=\"15684\"/>\n<stop tag=\"4301\" title=\"Geary Blvd &amp; Kearny St\"
40
- lat=\"37.7879999\" lon=\"-122.4036599\" stopId=\"14301\"/>\n<stop tag=\"4766\"
41
- title=\"Geary Blvd &amp; Stockton St\" lat=\"37.78764\" lon=\"-122.4064899\"
42
- stopId=\"14766\"/>\n<stop tag=\"4757\" title=\"Geary Blvd &amp; Powell St\"
43
- lat=\"37.7873999\" lon=\"-122.40839\" stopId=\"14757\"/>\n<stop tag=\"4767\"
44
- title=\"Geary Blvd &amp; Taylor St\" lat=\"37.78698\" lon=\"-122.4116799\" stopId=\"14767\"/>\n<stop
45
- tag=\"4300\" title=\"Geary Blvd &amp; Jones St\" lat=\"37.78677\" lon=\"-122.4133299\"
46
- stopId=\"14300\"/>\n<stop tag=\"4303\" title=\"Geary Blvd &amp; Leavenworth
47
- St\" lat=\"37.78656\" lon=\"-122.4149699\" stopId=\"14303\"/>\n<stop tag=\"4299\"
48
- title=\"Geary Blvd &amp; Hyde St\" lat=\"37.78635\" lon=\"-122.4166099\" stopId=\"14299\"/>\n<stop
49
- tag=\"4302\" title=\"Geary Blvd &amp; Larkin St\" lat=\"37.7861399\" lon=\"-122.41825\"
50
- stopId=\"14302\"/>\n<stop tag=\"4768\" title=\"Geary Blvd &amp; Van Ness Ave\"
51
- lat=\"37.7858399\" lon=\"-122.42063\" stopId=\"14768\"/>\n<stop tag=\"4297\"
52
- title=\"Geary Blvd &amp; Franklin St\" lat=\"37.7855699\" lon=\"-122.42289\"
53
- stopId=\"14297\"/>\n<stop tag=\"4298\" title=\"Geary Blvd &amp; Gough St\" lat=\"37.7854299\"
54
- lon=\"-122.4250799\" stopId=\"14298\"/>\n<stop tag=\"4304\" title=\"Geary Blvd
55
- &amp; Laguna St\" lat=\"37.78503\" lon=\"-122.4278099\" stopId=\"14304\"/>\n<stop
56
- tag=\"4769\" title=\"Geary Blvd &amp; Webster St\" lat=\"37.7846399\" lon=\"-122.43102\"
57
- stopId=\"14769\"/>\n<stop tag=\"4295\" title=\"Geary Blvd &amp; Fillmore St\"
58
- lat=\"37.7843899\" lon=\"-122.43305\" stopId=\"14295\"/>\n<stop tag=\"4760\"
59
- title=\"Geary Blvd &amp; Scott St\" lat=\"37.78385\" lon=\"-122.4377599\" stopId=\"14760\"/>\n<stop
60
- tag=\"4293\" title=\"Geary Blvd &amp; Divisadero St\" lat=\"37.78343\" lon=\"-122.4393699\"
61
- stopId=\"14293\"/>\n<stop tag=\"4289\" title=\"Geary Blvd &amp; Baker St\" lat=\"37.7829699\"
62
- lon=\"-122.44296\" stopId=\"14289\"/>\n<stop tag=\"4758\" title=\"Geary Blvd
63
- &amp; Presidio Ave\" lat=\"37.7825099\" lon=\"-122.4468\" stopId=\"14758\"/>\n<stop
64
- tag=\"4290\" title=\"Geary Blvd &amp; Collins St\" lat=\"37.78224\" lon=\"-122.4499899\"
65
- stopId=\"14290\"/>\n<stop tag=\"4762\" title=\"Geary Blvd &amp; Spruce St\"
66
- lat=\"37.7818499\" lon=\"-122.45307\" stopId=\"14762\"/>\n<stop tag=\"4292\"
67
- title=\"Geary Blvd &amp; Commonwealth St\" lat=\"37.7815299\" lon=\"-122.45568\"
68
- stopId=\"14292\"/>\n<stop tag=\"4287\" title=\"Geary Blvd &amp; Arguello Blvd\"
69
- lat=\"37.7813799\" lon=\"-122.45874\" stopId=\"14287\"/>\n<stop tag=\"4255\"
70
- title=\"Geary Blvd &amp; 3rd Ave\" lat=\"37.78128\" lon=\"-122.4609399\" stopId=\"14255\"/>\n<stop
71
- tag=\"4257\" title=\"Geary Blvd &amp; 6th Ave\" lat=\"37.7811299\" lon=\"-122.46416\"
72
- stopId=\"14257\"/>\n<stop tag=\"4259\" title=\"Geary Blvd &amp; 9th Ave\" lat=\"37.78098\"
73
- lon=\"-122.4676399\" stopId=\"14259\"/>\n<stop tag=\"4261\" title=\"Geary Blvd
74
- &amp; 12th Ave\" lat=\"37.78084\" lon=\"-122.4705999\" stopId=\"14261\"/>\n<stop
75
- tag=\"4755\" title=\"Geary Blvd &amp; Park Presidio Blvd\" lat=\"37.7806899\"
76
- lon=\"-122.47242\" stopId=\"14755\"/>\n<stop tag=\"4263\" title=\"Geary Blvd
77
- &amp; 17th Ave\" lat=\"37.7805999\" lon=\"-122.47604\" stopId=\"14263\"/>\n<stop
78
- tag=\"4265\" title=\"Geary Blvd &amp; 20th Ave\" lat=\"37.78045\" lon=\"-122.4792699\"
79
- stopId=\"14265\"/>\n<stop tag=\"4267\" title=\"Geary Blvd &amp; 22nd Ave\" lat=\"37.78035\"
80
- lon=\"-122.4813999\" stopId=\"14267\"/>\n<stop tag=\"4269\" title=\"Geary Blvd
81
- &amp; 25th Ave\" lat=\"37.7802199\" lon=\"-122.48461\" stopId=\"14269\"/>\n<stop
82
- tag=\"4271\" title=\"Geary Blvd &amp; 28th Ave\" lat=\"37.7800099\" lon=\"-122.48781\"
83
- stopId=\"14271\"/>\n<stop tag=\"4273\" title=\"Geary Blvd &amp; 30th Ave\" lat=\"37.7799599\"
84
- lon=\"-122.48997\" stopId=\"14273\"/>\n<stop tag=\"3560\" title=\"33rd Ave &amp;
85
- Geary Blvd\" lat=\"37.7795699\" lon=\"-122.49338\" stopId=\"13560\"/>\n<stop
86
- tag=\"3551\" title=\"33rd Ave &amp; Anza St\" lat=\"37.77786\" lon=\"-122.49325\"
87
- stopId=\"13551\"/>\n<stop tag=\"3554\" title=\"33rd Ave &amp; Balboa St\" lat=\"37.7759999\"
88
- lon=\"-122.4931299\" stopId=\"13554\"/>\n<stop tag=\"33545\" title=\"32nd Ave
89
- &amp; Balboa St\" lat=\"37.7766799\" lon=\"-122.49195\" stopId=\"133545\"/>\n<stop
90
- tag=\"4278\" title=\"Geary Blvd &amp; 33rd Ave\" lat=\"37.7797999\" lon=\"-122.49344\"
91
- stopId=\"14278\"/>\n<stop tag=\"4280\" title=\"Geary Blvd &amp; 36th Ave\" lat=\"37.7796699\"
92
- lon=\"-122.4964\" stopId=\"14280\"/>\n<stop tag=\"4282\" title=\"Geary Blvd
93
- &amp; 40th Ave\" lat=\"37.7794699\" lon=\"-122.50068\" stopId=\"14282\"/>\n<stop
94
- tag=\"6109\" title=\"Point Lobos Ave &amp; 42nd Ave\" lat=\"37.7796499\" lon=\"-122.5028499\"
95
- stopId=\"16109\"/>\n<stop tag=\"3566\" title=\"42nd Ave &amp; Clement St\" lat=\"37.7810899\"
96
- lon=\"-122.5029899\" stopId=\"13566\"/>\n<stop tag=\"5511\" title=\"Fort Miley
97
- Hospital\" lat=\"37.7818299\" lon=\"-122.50411\" stopId=\"15511\"/>\n<stop tag=\"3567\"
98
- title=\"43rd Ave &amp; Clement St\" lat=\"37.78101\" lon=\"-122.5042299\" stopId=\"13567\"/>\n<stop
99
- tag=\"3568\" title=\"43rd Ave &amp; Point Lobos Ave\" lat=\"37.7797799\" lon=\"-122.5041399\"
100
- stopId=\"13568\"/>\n<stop tag=\"6111\" title=\"Point Lobos Ave &amp; 44th Ave\"
101
- lat=\"37.77984\" lon=\"-122.50501\" stopId=\"16111\"/>\n<stop tag=\"6129\" title=\"Point
102
- Lobos Ave &amp; 46th Ave\" lat=\"37.7800399\" lon=\"-122.50744\" stopId=\"16129\"/>\n<stop
103
- tag=\"33608\" title=\"48th Ave &amp; Point Lobos Ave\" lat=\"37.7790199\" lon=\"-122.50941\"
104
- stopId=\"133608\"/>\n<stop tag=\"35511\" title=\"Fort Miley Hospital\" lat=\"37.7818299\"
105
- lon=\"-122.50411\" stopId=\"135511\"/>\n<stop tag=\"3545\" title=\"32nd Ave
106
- &amp; Balboa St\" lat=\"37.7766799\" lon=\"-122.49195\" stopId=\"13545\"/>\n<stop
107
- tag=\"3635\" title=\"Anza St &amp; 33rd Ave\" lat=\"37.7778499\" lon=\"-122.4930299\"
108
- stopId=\"13635\"/>\n<stop tag=\"3559\" title=\"33rd Ave &amp; Geary Blvd\" lat=\"37.7795499\"
109
- lon=\"-122.49321\" stopId=\"13559\"/>\n<stop tag=\"4275\" title=\"Geary Blvd
110
- &amp; 32nd Ave\" lat=\"37.77965\" lon=\"-122.4920699\" stopId=\"14275\"/>\n<stop
111
- tag=\"4274\" title=\"Geary Blvd &amp; 30th Ave\" lat=\"37.77973\" lon=\"-122.4901899\"
112
- stopId=\"14274\"/>\n<stop tag=\"4272\" title=\"Geary Blvd &amp; 28th Ave\" lat=\"37.7798599\"
113
- lon=\"-122.48805\" stopId=\"14272\"/>\n<stop tag=\"4270\" title=\"Geary Blvd
114
- &amp; 25th Ave\" lat=\"37.7799799\" lon=\"-122.48482\" stopId=\"14270\"/>\n<stop
115
- tag=\"4268\" title=\"Geary Blvd &amp; 23rd Ave\" lat=\"37.78008\" lon=\"-122.4826899\"
116
- stopId=\"14268\"/>\n<stop tag=\"4266\" title=\"Geary Blvd &amp; 20th Ave\" lat=\"37.7802199\"
117
- lon=\"-122.47948\" stopId=\"14266\"/>\n<stop tag=\"4264\" title=\"Geary Blvd
118
- &amp; 17th Ave\" lat=\"37.78037\" lon=\"-122.4762599\" stopId=\"14264\"/>\n<stop
119
- tag=\"4756\" title=\"Geary Blvd &amp; Park Presidio Blvd\" lat=\"37.7805299\"
120
- lon=\"-122.47268\" stopId=\"14756\"/>\n<stop tag=\"4262\" title=\"Geary Blvd
121
- &amp; 12th Ave\" lat=\"37.7806099\" lon=\"-122.47082\" stopId=\"14262\"/>\n<stop
122
- tag=\"4260\" title=\"Geary Blvd &amp; 9th Ave\" lat=\"37.78078\" lon=\"-122.4673199\"
123
- stopId=\"14260\"/>\n<stop tag=\"4258\" title=\"Geary Blvd &amp; 6th Ave\" lat=\"37.7808999\"
124
- lon=\"-122.46438\" stopId=\"14258\"/>\n<stop tag=\"4256\" title=\"Geary Blvd
125
- &amp; 3rd Ave\" lat=\"37.78105\" lon=\"-122.4611599\" stopId=\"14256\"/>\n<stop
126
- tag=\"4288\" title=\"Geary Blvd &amp; Arguello Blvd\" lat=\"37.7811499\" lon=\"-122.45869\"
127
- stopId=\"14288\"/>\n<stop tag=\"4764\" title=\"Geary Blvd &amp; Stanyan St\"
128
- lat=\"37.7812599\" lon=\"-122.45643\" stopId=\"14764\"/>\n<stop tag=\"4763\"
129
- title=\"Geary Blvd &amp; Spruce St\" lat=\"37.7816\" lon=\"-122.4532599\" stopId=\"14763\"/>\n<stop
130
- tag=\"4291\" title=\"Geary Blvd &amp; Collins St\" lat=\"37.78203\" lon=\"-122.4499099\"
131
- stopId=\"14291\"/>\n<stop tag=\"4754\" title=\"Geary Blvd &amp; Masonic Ave\"
132
- lat=\"37.78223\" lon=\"-122.4476299\" stopId=\"14754\"/>\n<stop tag=\"4759\"
133
- title=\"Geary Blvd &amp; Presidio Ave\" lat=\"37.7823199\" lon=\"-122.44593\"
134
- stopId=\"14759\"/>\n<stop tag=\"4765\" title=\"Geary Blvd &amp; St Joseph&apos;S
135
- Ave\" lat=\"37.7828\" lon=\"-122.4425399\" stopId=\"14765\"/>\n<stop tag=\"4294\"
136
- title=\"Geary Blvd &amp; Divisadero St\" lat=\"37.7831799\" lon=\"-122.43957\"
137
- stopId=\"14294\"/>\n<stop tag=\"4761\" title=\"Geary Blvd &amp; Scott St\" lat=\"37.78362\"
138
- lon=\"-122.4376699\" stopId=\"14761\"/>\n<stop tag=\"4296\" title=\"Geary Blvd
139
- &amp; Fillmore St\" lat=\"37.7842599\" lon=\"-122.43331\" stopId=\"14296\"/>\n<stop
140
- tag=\"4770\" title=\"Geary Blvd &amp; Webster St\" lat=\"37.7844899\" lon=\"-122.43135\"
141
- stopId=\"14770\"/>\n<stop tag=\"4305\" title=\"Geary Blvd &amp; Laguna St\"
142
- lat=\"37.78485\" lon=\"-122.4281499\" stopId=\"14305\"/>\n<stop tag=\"6425\"
143
- title=\"Starr King Way &amp; Gough St\" lat=\"37.7850499\" lon=\"-122.4240799\"
144
- stopId=\"16425\"/>\n<stop tag=\"5818\" title=\"O&apos;Farrell St &amp; Van Ness
145
- Ave\" lat=\"37.7846599\" lon=\"-122.42141\" stopId=\"15818\"/>\n<stop tag=\"5813\"
146
- title=\"O&apos;Farrell St &amp; Larkin St\" lat=\"37.78509\" lon=\"-122.4179999\"
147
- stopId=\"15813\"/>\n<stop tag=\"5811\" title=\"O&apos;Farrell St &amp; Hyde
148
- St\" lat=\"37.78537\" lon=\"-122.4157699\" stopId=\"15811\"/>\n<stop tag=\"5814\"
149
- title=\"O&apos;Farrell St &amp; Leavenworth St\" lat=\"37.78554\" lon=\"-122.4144399\"
150
- stopId=\"15814\"/>\n<stop tag=\"7301\" title=\"O&apos;Farrell St &amp; Taylor
151
- St\" lat=\"37.7858499\" lon=\"-122.41198\" stopId=\"17301\"/>\n<stop tag=\"5817\"
152
- title=\"O&apos;Farrell St &amp; Powell St\" lat=\"37.7863299\" lon=\"-122.40813\"
153
- stopId=\"15817\"/>\n<stop tag=\"5810\" title=\"O&apos;Farrell St &amp; Grant
154
- Ave\" lat=\"37.7866399\" lon=\"-122.40563\" stopId=\"15810\"/>\n<stop tag=\"5641\"
155
- title=\"Market St &amp; 3rd St\" lat=\"37.7877099\" lon=\"-122.40321\" stopId=\"15641\"/>\n<stop
156
- tag=\"5638\" title=\"Market St &amp; 1st St\" lat=\"37.7909\" lon=\"-122.3991399\"
157
- stopId=\"15638\"/>\n<stop tag=\"3089\" title=\"Beale St &amp; Mission St\" lat=\"37.7917499\"
158
- lon=\"-122.3966999\" stopId=\"13089\"/>\n<stop tag=\"7619\" title=\"Bealemst
159
- &amp; Howard St\" lat=\"37.7896899\" lon=\"-122.39404\" stopId=\"17619\"/>\n<stop
160
- tag=\"3608\" title=\"48th Ave &amp; Point Lobos Ave\" lat=\"37.7790199\" lon=\"-122.50941\"
161
- stopId=\"13608\"/>\n<stop tag=\"4286\" title=\"Geary Blvd &amp; 45th Ave\" lat=\"37.7790399\"
162
- lon=\"-122.50626\" stopId=\"14286\"/>\n<stop tag=\"4285\" title=\"Geary Blvd
163
- &amp; 42nd Ave\" lat=\"37.77915\" lon=\"-122.5027699\" stopId=\"14285\"/>\n<stop
164
- tag=\"4283\" title=\"Geary Blvd &amp; 39th Ave\" lat=\"37.7792899\" lon=\"-122.49983\"
165
- stopId=\"14283\"/>\n<stop tag=\"4281\" title=\"Geary Blvd &amp; 36th Ave\" lat=\"37.77944\"
166
- lon=\"-122.4966199\" stopId=\"14281\"/>\n<stop tag=\"4279\" title=\"Geary Blvd
167
- &amp; 33rd Ave\" lat=\"37.7795699\" lon=\"-122.4934\" stopId=\"14279\"/>\n<stop
168
- tag=\"15511\" title=\"Fort Miley Hospital\" lat=\"37.7818299\" lon=\"-122.50411\"
169
- stopId=\"115511\"/>\n<stop tag=\"13567\" title=\"43rd Ave &amp; Clement St\"
170
- lat=\"37.78101\" lon=\"-122.5042299\" stopId=\"113567\"/>\n<stop tag=\"13568\"
171
- title=\"43rd Ave &amp; Point Lobos Ave\" lat=\"37.7797799\" lon=\"-122.5041399\"
172
- stopId=\"113568\"/>\n<direction tag=\"38_IB3\" title=\"Inbound to Downtown\"
173
- name=\"Inbound\" useForUI=\"true\">\n <stop tag=\"15511\" />\n <stop tag=\"13567\"
174
- />\n <stop tag=\"13568\" />\n <stop tag=\"4285\" />\n <stop tag=\"4283\"
175
- />\n <stop tag=\"4281\" />\n <stop tag=\"4279\" />\n <stop tag=\"4275\" />\n
176
- \ <stop tag=\"4274\" />\n <stop tag=\"4272\" />\n <stop tag=\"4270\" />\n
177
- \ <stop tag=\"4268\" />\n <stop tag=\"4266\" />\n <stop tag=\"4264\" />\n
178
- \ <stop tag=\"4756\" />\n <stop tag=\"4262\" />\n <stop tag=\"4260\" />\n
179
- \ <stop tag=\"4258\" />\n <stop tag=\"4256\" />\n <stop tag=\"4288\" />\n
180
- \ <stop tag=\"4764\" />\n <stop tag=\"4763\" />\n <stop tag=\"4291\" />\n
181
- \ <stop tag=\"4754\" />\n <stop tag=\"4759\" />\n <stop tag=\"4765\" />\n
182
- \ <stop tag=\"4294\" />\n <stop tag=\"4761\" />\n <stop tag=\"4296\" />\n
183
- \ <stop tag=\"4770\" />\n <stop tag=\"4305\" />\n <stop tag=\"6425\" />\n
184
- \ <stop tag=\"5818\" />\n <stop tag=\"5813\" />\n <stop tag=\"5811\" />\n
185
- \ <stop tag=\"5814\" />\n <stop tag=\"7301\" />\n <stop tag=\"5817\" />\n
186
- \ <stop tag=\"5810\" />\n <stop tag=\"5641\" />\n <stop tag=\"5638\" />\n
187
- \ <stop tag=\"3089\" />\n <stop tag=\"7619\" />\n</direction>\n<direction tag=\"38_IB2\"
188
- title=\"Inbound to Downtown\" name=\"Inbound\" useForUI=\"true\">\n <stop tag=\"3608\"
189
- />\n <stop tag=\"4286\" />\n <stop tag=\"4285\" />\n <stop tag=\"4283\" />\n
190
- \ <stop tag=\"4281\" />\n <stop tag=\"4279\" />\n <stop tag=\"4275\" />\n
191
- \ <stop tag=\"4274\" />\n <stop tag=\"4272\" />\n <stop tag=\"4270\" />\n
192
- \ <stop tag=\"4268\" />\n <stop tag=\"4266\" />\n <stop tag=\"4264\" />\n
193
- \ <stop tag=\"4756\" />\n <stop tag=\"4262\" />\n <stop tag=\"4260\" />\n
194
- \ <stop tag=\"4258\" />\n <stop tag=\"4256\" />\n <stop tag=\"4288\" />\n
195
- \ <stop tag=\"4764\" />\n <stop tag=\"4763\" />\n <stop tag=\"4291\" />\n
196
- \ <stop tag=\"4754\" />\n <stop tag=\"4759\" />\n <stop tag=\"4765\" />\n
197
- \ <stop tag=\"4294\" />\n <stop tag=\"4761\" />\n <stop tag=\"4296\" />\n
198
- \ <stop tag=\"4770\" />\n <stop tag=\"4305\" />\n <stop tag=\"6425\" />\n
199
- \ <stop tag=\"5818\" />\n <stop tag=\"5813\" />\n <stop tag=\"5811\" />\n
200
- \ <stop tag=\"5814\" />\n <stop tag=\"7301\" />\n <stop tag=\"5817\" />\n
201
- \ <stop tag=\"5810\" />\n <stop tag=\"5641\" />\n <stop tag=\"5638\" />\n
202
- \ <stop tag=\"3089\" />\n <stop tag=\"7619\" />\n</direction>\n<direction tag=\"38_IB1\"
203
- title=\"Inbound to Downtown\" name=\"Inbound\" useForUI=\"true\">\n <stop tag=\"3545\"
204
- />\n <stop tag=\"3635\" />\n <stop tag=\"3559\" />\n <stop tag=\"4275\" />\n
205
- \ <stop tag=\"4274\" />\n <stop tag=\"4272\" />\n <stop tag=\"4270\" />\n
206
- \ <stop tag=\"4268\" />\n <stop tag=\"4266\" />\n <stop tag=\"4264\" />\n
207
- \ <stop tag=\"4756\" />\n <stop tag=\"4262\" />\n <stop tag=\"4260\" />\n
208
- \ <stop tag=\"4258\" />\n <stop tag=\"4256\" />\n <stop tag=\"4288\" />\n
209
- \ <stop tag=\"4764\" />\n <stop tag=\"4763\" />\n <stop tag=\"4291\" />\n
210
- \ <stop tag=\"4754\" />\n <stop tag=\"4759\" />\n <stop tag=\"4765\" />\n
211
- \ <stop tag=\"4294\" />\n <stop tag=\"4761\" />\n <stop tag=\"4296\" />\n
212
- \ <stop tag=\"4770\" />\n <stop tag=\"4305\" />\n <stop tag=\"6425\" />\n
213
- \ <stop tag=\"5818\" />\n <stop tag=\"5813\" />\n <stop tag=\"5811\" />\n
214
- \ <stop tag=\"5814\" />\n <stop tag=\"7301\" />\n <stop tag=\"5817\" />\n
215
- \ <stop tag=\"5810\" />\n <stop tag=\"5641\" />\n <stop tag=\"5638\" />\n
216
- \ <stop tag=\"3089\" />\n <stop tag=\"7619\" />\n</direction>\n<direction tag=\"38_OB3\"
217
- title=\"Outbound to the Richmond District\" name=\"Outbound\" useForUI=\"true\">\n
218
- \ <stop tag=\"7620\" />\n <stop tag=\"5579\" />\n <stop tag=\"4725\" />\n
219
- \ <stop tag=\"5689\" />\n <stop tag=\"5684\" />\n <stop tag=\"4301\" />\n
220
- \ <stop tag=\"4766\" />\n <stop tag=\"4757\" />\n <stop tag=\"4767\" />\n
221
- \ <stop tag=\"4300\" />\n <stop tag=\"4303\" />\n <stop tag=\"4299\" />\n
222
- \ <stop tag=\"4302\" />\n <stop tag=\"4768\" />\n <stop tag=\"4297\" />\n
223
- \ <stop tag=\"4298\" />\n <stop tag=\"4304\" />\n <stop tag=\"4769\" />\n
224
- \ <stop tag=\"4295\" />\n <stop tag=\"4760\" />\n <stop tag=\"4293\" />\n
225
- \ <stop tag=\"4289\" />\n <stop tag=\"4758\" />\n <stop tag=\"4290\" />\n
226
- \ <stop tag=\"4762\" />\n <stop tag=\"4292\" />\n <stop tag=\"4287\" />\n
227
- \ <stop tag=\"4255\" />\n <stop tag=\"4257\" />\n <stop tag=\"4259\" />\n
228
- \ <stop tag=\"4261\" />\n <stop tag=\"4755\" />\n <stop tag=\"4263\" />\n
229
- \ <stop tag=\"4265\" />\n <stop tag=\"4267\" />\n <stop tag=\"4269\" />\n
230
- \ <stop tag=\"4271\" />\n <stop tag=\"4273\" />\n <stop tag=\"4278\" />\n
231
- \ <stop tag=\"4280\" />\n <stop tag=\"4282\" />\n <stop tag=\"6109\" />\n
232
- \ <stop tag=\"3566\" />\n <stop tag=\"5511\" />\n <stop tag=\"3567\" />\n
233
- \ <stop tag=\"3568\" />\n <stop tag=\"6111\" />\n <stop tag=\"6129\" />\n
234
- \ <stop tag=\"33608\" />\n</direction>\n<path>\n<point lat=\"37.78771\" lon=\"-122.40321\"/>\n<point
235
- lat=\"37.7909\" lon=\"-122.39914\"/>\n<point lat=\"37.7924099\" lon=\"-122.39738\"/>\n<point
236
- lat=\"37.79175\" lon=\"-122.3967\"/>\n<point lat=\"37.78993\" lon=\"-122.39428\"/>\n<point
237
- lat=\"37.78969\" lon=\"-122.39404\"/>\n</path>\n<path>\n<point lat=\"37.78584\"
238
- lon=\"-122.42063\"/>\n<point lat=\"37.78557\" lon=\"-122.42289\"/>\n<point lat=\"37.78541\"
239
- lon=\"-122.42355\"/>\n<point lat=\"37.7854\" lon=\"-122.42444\"/>\n<point lat=\"37.78543\"
240
- lon=\"-122.42508\"/>\n<point lat=\"37.78503\" lon=\"-122.42781\"/>\n<point lat=\"37.78464\"
241
- lon=\"-122.43102\"/>\n<point lat=\"37.78439\" lon=\"-122.43305\"/>\n</path>\n<path>\n<point
242
- lat=\"37.78053\" lon=\"-122.47268\"/>\n<point lat=\"37.78061\" lon=\"-122.47082\"/>\n<point
243
- lat=\"37.78078\" lon=\"-122.46732\"/>\n<point lat=\"37.7809\" lon=\"-122.46438\"/>\n<point
244
- lat=\"37.78105\" lon=\"-122.46116\"/>\n<point lat=\"37.7811499\" lon=\"-122.45869\"/>\n<point
245
- lat=\"37.78126\" lon=\"-122.45643\"/>\n<point lat=\"37.7816\" lon=\"-122.45326\"/>\n<point
246
- lat=\"37.78203\" lon=\"-122.44991\"/>\n<point lat=\"37.78229\" lon=\"-122.44789\"/>\n<point
247
- lat=\"37.78223\" lon=\"-122.44763\"/>\n<point lat=\"37.7822699\" lon=\"-122.44754\"/>\n<point
248
- lat=\"37.78222\" lon=\"-122.44723\"/>\n<point lat=\"37.78232\" lon=\"-122.44593\"/>\n</path>\n<path>\n<point
249
- lat=\"37.78069\" lon=\"-122.47242\"/>\n<point lat=\"37.7806\" lon=\"-122.47604\"/>\n<point
250
- lat=\"37.78045\" lon=\"-122.47927\"/>\n<point lat=\"37.78035\" lon=\"-122.4814\"/>\n<point
251
- lat=\"37.78022\" lon=\"-122.48461\"/>\n<point lat=\"37.78001\" lon=\"-122.48781\"/>\n<point
252
- lat=\"37.77996\" lon=\"-122.48997\"/>\n<point lat=\"37.7798\" lon=\"-122.49344\"/>\n</path>\n<path>\n<point
253
- lat=\"37.78849\" lon=\"-122.40248\"/>\n<point lat=\"37.7880899\" lon=\"-122.4029\"/>\n<point
254
- lat=\"37.78796\" lon=\"-122.40349\"/>\n<point lat=\"37.7879999\" lon=\"-122.40366\"/>\n<point
255
- lat=\"37.78764\" lon=\"-122.40649\"/>\n<point lat=\"37.7874\" lon=\"-122.40839\"/>\n</path>\n<path>\n<point
256
- lat=\"37.78426\" lon=\"-122.43331\"/>\n<point lat=\"37.78449\" lon=\"-122.43135\"/>\n<point
257
- lat=\"37.78485\" lon=\"-122.42815\"/>\n<point lat=\"37.78534\" lon=\"-122.42469\"/>\n<point
258
- lat=\"37.78519\" lon=\"-122.42417\"/>\n<point lat=\"37.78505\" lon=\"-122.42408\"/>\n<point
259
- lat=\"37.7849999\" lon=\"-122.42387\"/>\n<point lat=\"37.78477\" lon=\"-122.42361\"/>\n<point
260
- lat=\"37.7846199\" lon=\"-122.42332\"/>\n<point lat=\"37.78455\" lon=\"-122.42304\"/>\n<point
261
- lat=\"37.78466\" lon=\"-122.42141\"/>\n</path>\n<path>\n<point lat=\"37.79055\"
262
- lon=\"-122.3933\"/>\n<point lat=\"37.79184\" lon=\"-122.39494\"/>\n<point lat=\"37.79114\"
263
- lon=\"-122.39592\"/>\n<point lat=\"37.79046\" lon=\"-122.39669\"/>\n<point lat=\"37.79165\"
264
- lon=\"-122.39815\"/>\n<point lat=\"37.79172\" lon=\"-122.39826\"/>\n<point lat=\"37.79016\"
265
- lon=\"-122.40041\"/>\n<point lat=\"37.78849\" lon=\"-122.40248\"/>\n</path>\n<path>\n<point
266
- lat=\"37.78466\" lon=\"-122.42141\"/>\n<point lat=\"37.7850899\" lon=\"-122.418\"/>\n<point
267
- lat=\"37.78537\" lon=\"-122.41577\"/>\n<point lat=\"37.78554\" lon=\"-122.41444\"/>\n<point
268
- lat=\"37.78585\" lon=\"-122.41198\"/>\n<point lat=\"37.78633\" lon=\"-122.40813\"/>\n</path>\n<path>\n<point
269
- lat=\"37.78251\" lon=\"-122.4468\"/>\n<point lat=\"37.78239\" lon=\"-122.4473\"/>\n<point
270
- lat=\"37.78248\" lon=\"-122.44806\"/>\n<point lat=\"37.78224\" lon=\"-122.44999\"/>\n<point
271
- lat=\"37.78185\" lon=\"-122.45307\"/>\n<point lat=\"37.7815299\" lon=\"-122.45568\"/>\n<point
272
- lat=\"37.78138\" lon=\"-122.45874\"/>\n<point lat=\"37.78128\" lon=\"-122.46094\"/>\n<point
273
- lat=\"37.78113\" lon=\"-122.46416\"/>\n<point lat=\"37.78098\" lon=\"-122.46764\"/>\n<point
274
- lat=\"37.78084\" lon=\"-122.4706\"/>\n<point lat=\"37.78069\" lon=\"-122.47242\"/>\n</path>\n<path>\n<point
275
- lat=\"37.78232\" lon=\"-122.44593\"/>\n<point lat=\"37.7828\" lon=\"-122.44254\"/>\n<point
276
- lat=\"37.78318\" lon=\"-122.43957\"/>\n<point lat=\"37.78343\" lon=\"-122.43864\"/>\n<point
277
- lat=\"37.78367\" lon=\"-122.43803\"/>\n<point lat=\"37.78362\" lon=\"-122.43767\"/>\n<point
278
- lat=\"37.78426\" lon=\"-122.43331\"/>\n</path>\n<path>\n<point lat=\"37.78633\"
279
- lon=\"-122.40813\"/>\n<point lat=\"37.78664\" lon=\"-122.40563\"/>\n<point lat=\"37.78681\"
280
- lon=\"-122.40485\"/>\n<point lat=\"37.78673\" lon=\"-122.40458\"/>\n<point lat=\"37.78771\"
281
- lon=\"-122.40321\"/>\n</path>\n<path>\n<point lat=\"37.7874\" lon=\"-122.40839\"/>\n<point
282
- lat=\"37.78698\" lon=\"-122.41168\"/>\n<point lat=\"37.78677\" lon=\"-122.41333\"/>\n<point
283
- lat=\"37.78656\" lon=\"-122.41497\"/>\n<point lat=\"37.78635\" lon=\"-122.41661\"/>\n<point
284
- lat=\"37.78614\" lon=\"-122.41825\"/>\n<point lat=\"37.78584\" lon=\"-122.42063\"/>\n</path>\n<path>\n<point
285
- lat=\"37.78183\" lon=\"-122.50411\"/>\n<point lat=\"37.78197\" lon=\"-122.50458\"/>\n<point
286
- lat=\"37.78202\" lon=\"-122.50492\"/>\n<point lat=\"37.78208\" lon=\"-122.50711\"/>\n<point
287
- lat=\"37.78216\" lon=\"-122.50738\"/>\n<point lat=\"37.78195\" lon=\"-122.5076\"/>\n<point
288
- lat=\"37.78173\" lon=\"-122.50739\"/>\n<point lat=\"37.78159\" lon=\"-122.50708\"/>\n<point
289
- lat=\"37.7815299\" lon=\"-122.5067\"/>\n<point lat=\"37.78159\" lon=\"-122.50634\"/>\n<point
290
- lat=\"37.7816\" lon=\"-122.506\"/>\n<point lat=\"37.78143\" lon=\"-122.5057\"/>\n<point
291
- lat=\"37.78132\" lon=\"-122.50439\"/>\n<point lat=\"37.78113\" lon=\"-122.50416\"/>\n<point
292
- lat=\"37.78101\" lon=\"-122.50423\"/>\n<point lat=\"37.77978\" lon=\"-122.50414\"/>\n<point
293
- lat=\"37.77971\" lon=\"-122.50406\"/>\n<point lat=\"37.77984\" lon=\"-122.50501\"/>\n<point
294
- lat=\"37.77998\" lon=\"-122.5073\"/>\n<point lat=\"37.78004\" lon=\"-122.50744\"/>\n<point
295
- lat=\"37.77985\" lon=\"-122.50943\"/>\n<point lat=\"37.77902\" lon=\"-122.50941\"/>\n</path>\n<path>\n<point
296
- lat=\"37.78069\" lon=\"-122.47242\"/>\n<point lat=\"37.7806\" lon=\"-122.47604\"/>\n<point
297
- lat=\"37.78045\" lon=\"-122.47927\"/>\n<point lat=\"37.78035\" lon=\"-122.4814\"/>\n<point
298
- lat=\"37.78022\" lon=\"-122.48461\"/>\n<point lat=\"37.78001\" lon=\"-122.48781\"/>\n<point
299
- lat=\"37.77996\" lon=\"-122.48997\"/>\n<point lat=\"37.77969\" lon=\"-122.4933\"/>\n<point
300
- lat=\"37.77957\" lon=\"-122.49338\"/>\n</path>\n<path>\n<point lat=\"37.78439\"
301
- lon=\"-122.43305\"/>\n<point lat=\"37.78385\" lon=\"-122.43776\"/>\n<point lat=\"37.78372\"
302
- lon=\"-122.43785\"/>\n<point lat=\"37.78343\" lon=\"-122.43864\"/>\n<point lat=\"37.78343\"
303
- lon=\"-122.43937\"/>\n<point lat=\"37.78297\" lon=\"-122.44296\"/>\n<point lat=\"37.78251\"
304
- lon=\"-122.4468\"/>\n</path>\n<path>\n<point lat=\"37.7798\" lon=\"-122.49344\"/>\n<point
305
- lat=\"37.77967\" lon=\"-122.4964\"/>\n<point lat=\"37.77947\" lon=\"-122.50068\"/>\n<point
306
- lat=\"37.77935\" lon=\"-122.5008\"/>\n<point lat=\"37.7796499\" lon=\"-122.50285\"/>\n<point
307
- lat=\"37.77961\" lon=\"-122.50297\"/>\n<point lat=\"37.78109\" lon=\"-122.50299\"/>\n<point
308
- lat=\"37.78118\" lon=\"-122.50309\"/>\n<point lat=\"37.78139\" lon=\"-122.5032\"/>\n<point
309
- lat=\"37.78148\" lon=\"-122.50357\"/>\n<point lat=\"37.78183\" lon=\"-122.50411\"/>\n</path>\n<path>\n<point
310
- lat=\"37.77955\" lon=\"-122.49321\"/>\n<point lat=\"37.77969\" lon=\"-122.4933\"/>\n<point
311
- lat=\"37.7796499\" lon=\"-122.49207\"/>\n<point lat=\"37.77973\" lon=\"-122.49019\"/>\n<point
312
- lat=\"37.77986\" lon=\"-122.48805\"/>\n<point lat=\"37.77998\" lon=\"-122.48482\"/>\n<point
313
- lat=\"37.78008\" lon=\"-122.48269\"/>\n<point lat=\"37.78022\" lon=\"-122.47948\"/>\n<point
314
- lat=\"37.78037\" lon=\"-122.47626\"/>\n<point lat=\"37.78053\" lon=\"-122.47268\"/>\n</path>\n<path>\n<point
315
- lat=\"37.78183\" lon=\"-122.50411\"/>\n<point lat=\"37.78197\" lon=\"-122.50458\"/>\n<point
316
- lat=\"37.78202\" lon=\"-122.50492\"/>\n<point lat=\"37.78208\" lon=\"-122.50711\"/>\n<point
317
- lat=\"37.78216\" lon=\"-122.50738\"/>\n<point lat=\"37.78195\" lon=\"-122.5076\"/>\n<point
318
- lat=\"37.78173\" lon=\"-122.50739\"/>\n<point lat=\"37.78159\" lon=\"-122.50708\"/>\n<point
319
- lat=\"37.7815299\" lon=\"-122.5067\"/>\n<point lat=\"37.78159\" lon=\"-122.50634\"/>\n<point
320
- lat=\"37.7816\" lon=\"-122.506\"/>\n<point lat=\"37.78143\" lon=\"-122.5057\"/>\n<point
321
- lat=\"37.78132\" lon=\"-122.50439\"/>\n<point lat=\"37.78113\" lon=\"-122.50416\"/>\n<point
322
- lat=\"37.78101\" lon=\"-122.50423\"/>\n<point lat=\"37.77978\" lon=\"-122.50414\"/>\n<point
323
- lat=\"37.77921\" lon=\"-122.50402\"/>\n<point lat=\"37.77915\" lon=\"-122.50277\"/>\n<point
324
- lat=\"37.77929\" lon=\"-122.49983\"/>\n<point lat=\"37.77944\" lon=\"-122.49662\"/>\n<point
325
- lat=\"37.77957\" lon=\"-122.4934\"/>\n</path>\n<path>\n<point lat=\"37.77668\"
326
- lon=\"-122.49195\"/>\n<point lat=\"37.77782\" lon=\"-122.49209\"/>\n<point lat=\"37.77785\"
327
- lon=\"-122.49303\"/>\n<point lat=\"37.7777699\" lon=\"-122.49317\"/>\n<point
328
- lat=\"37.77955\" lon=\"-122.49321\"/>\n</path>\n<path>\n<point lat=\"37.7798\"
329
- lon=\"-122.49344\"/>\n<point lat=\"37.77967\" lon=\"-122.4964\"/>\n<point lat=\"37.77947\"
330
- lon=\"-122.50068\"/>\n<point lat=\"37.77935\" lon=\"-122.5008\"/>\n<point lat=\"37.7796499\"
331
- lon=\"-122.50285\"/>\n<point lat=\"37.77984\" lon=\"-122.50501\"/>\n<point lat=\"37.77998\"
332
- lon=\"-122.5073\"/>\n<point lat=\"37.78004\" lon=\"-122.50744\"/>\n<point lat=\"37.77985\"
333
- lon=\"-122.50943\"/>\n<point lat=\"37.77902\" lon=\"-122.50941\"/>\n</path>\n<path>\n<point
334
- lat=\"37.77902\" lon=\"-122.50941\"/>\n<point lat=\"37.77904\" lon=\"-122.50626\"/>\n<point
335
- lat=\"37.77915\" lon=\"-122.50277\"/>\n<point lat=\"37.77929\" lon=\"-122.49983\"/>\n<point
336
- lat=\"37.77944\" lon=\"-122.49662\"/>\n<point lat=\"37.77957\" lon=\"-122.4934\"/>\n</path>\n<path>\n<point
337
- lat=\"37.77957\" lon=\"-122.49338\"/>\n<point lat=\"37.7778599\" lon=\"-122.49325\"/>\n<point
338
- lat=\"37.776\" lon=\"-122.49313\"/>\n<point lat=\"37.77591\" lon=\"-122.49304\"/>\n<point
339
- lat=\"37.77668\" lon=\"-122.49195\"/>\n</path>\n<path>\n<point lat=\"37.77957\"
340
- lon=\"-122.4934\"/>\n<point lat=\"37.7796499\" lon=\"-122.49207\"/>\n<point
341
- lat=\"37.77973\" lon=\"-122.49019\"/>\n<point lat=\"37.77986\" lon=\"-122.48805\"/>\n<point
342
- lat=\"37.77998\" lon=\"-122.48482\"/>\n<point lat=\"37.78008\" lon=\"-122.48269\"/>\n<point
343
- lat=\"37.78022\" lon=\"-122.47948\"/>\n<point lat=\"37.78037\" lon=\"-122.47626\"/>\n<point
344
- lat=\"37.78053\" lon=\"-122.47268\"/>\n</path>\n</route>\n</body>\n"
345
- http_version:
346
- recorded_at: Wed, 21 Nov 2012 18:02:18 GMT
347
- - request:
348
- method: get
349
- uri: http://webservices.nextbus.com/service/publicXMLFeed?a=sf-muni&command=predictions&d=38_IB3&r=38&s=15511
350
- body: ''
351
- headers:
352
- Accept:
353
- - ! '*/*'
354
- User-Agent:
355
- - Ruby
356
- response:
357
- status:
358
- code: 200
359
- message: OK
360
- headers:
361
- Date:
362
- - Wed, 21 Nov 2012 18:03:34 GMT
363
- Server:
364
- - Apache/2.2.4 (Unix) mod_ssl/2.2.4 OpenSSL/0.9.7m DAV/2 mod_jk/1.2.30
365
- Access-Control-Allow-Origin:
366
- - ! '*'
367
- Content-Length:
368
- - '1335'
369
- Vary:
370
- - Accept-Encoding
371
- Content-Type:
372
- - text/xml
373
- body: ! "<?xml version=\"1.0\" encoding=\"utf-8\" ?> \n<body copyright=\"All data
374
- copyright San Francisco Muni 2012.\">\n<predictions agencyTitle=\"San Francisco
375
- Muni\" routeTitle=\"38-Geary\" routeTag=\"38\" stopTitle=\"Fort Miley Hospital\"
376
- stopTag=\"15511\">\n <direction title=\"Inbound to Downtown\">\n <prediction
377
- epochTime=\"1353521580000\" seconds=\"565\" minutes=\"9\" isDeparture=\"true\"
378
- affectedByLayover=\"true\" dirTag=\"38_IB3\" vehicle=\"6210\" block=\"3817\"
379
- tripTag=\"5234662\" />\n <prediction epochTime=\"1353522540000\" seconds=\"1525\"
380
- minutes=\"25\" isDeparture=\"true\" affectedByLayover=\"true\" dirTag=\"38_IB3\"
381
- vehicle=\"6407\" block=\"3804\" tripTag=\"5234664\" />\n <prediction epochTime=\"1353523500000\"
382
- seconds=\"2485\" minutes=\"41\" isDeparture=\"true\" affectedByLayover=\"true\"
383
- dirTag=\"38_IB3\" vehicle=\"6259\" block=\"3805\" tripTag=\"5234666\" />\n <prediction
384
- epochTime=\"1353524460000\" seconds=\"3445\" minutes=\"57\" isDeparture=\"true\"
385
- affectedByLayover=\"true\" dirTag=\"38_IB3\" vehicle=\"6418\" block=\"3807\"
386
- tripTag=\"5234668\" />\n <prediction epochTime=\"1353525360000\" seconds=\"4345\"
387
- minutes=\"72\" isDeparture=\"true\" affectedByLayover=\"true\" dirTag=\"38_IB3\"
388
- vehicle=\"6421\" block=\"3809\" tripTag=\"5234670\" />\n </direction>\n<message
389
- text=\"sfmta.com or 3 1 1 for Muni info\"/>\n<message text=\"PROOF OF PAYMENT
390
- is required when on a Muni vehicle or in a station\"/>\n</predictions>\n</body>\n"
391
- http_version:
392
- recorded_at: Wed, 21 Nov 2012 18:03:36 GMT
393
- - request:
394
- method: get
395
- uri: http://webservices.nextbus.com/service/publicXMLFeed?a=sf-muni&command=predictions&d=38_IB3&r=38&s=15511
396
- body: ''
397
- headers:
398
- Accept:
399
- - ! '*/*'
400
- User-Agent:
401
- - Ruby
402
- response:
403
- status:
404
- code: 200
405
- message: OK
406
- headers:
407
- Date:
408
- - Wed, 21 Nov 2012 18:06:52 GMT
409
- Server:
410
- - Apache/2.2.4 (Unix) mod_ssl/2.2.4 OpenSSL/0.9.7m DAV/2 mod_jk/1.2.30
411
- Access-Control-Allow-Origin:
412
- - ! '*'
413
- Content-Length:
414
- - '1335'
415
- Vary:
416
- - Accept-Encoding
417
- Content-Type:
418
- - text/xml
419
- body: ! "<?xml version=\"1.0\" encoding=\"utf-8\" ?> \n<body copyright=\"All data
420
- copyright San Francisco Muni 2012.\">\n<predictions agencyTitle=\"San Francisco
421
- Muni\" routeTitle=\"38-Geary\" routeTag=\"38\" stopTitle=\"Fort Miley Hospital\"
422
- stopTag=\"15511\">\n <direction title=\"Inbound to Downtown\">\n <prediction
423
- epochTime=\"1353521580000\" seconds=\"367\" minutes=\"6\" isDeparture=\"true\"
424
- affectedByLayover=\"true\" dirTag=\"38_IB3\" vehicle=\"6210\" block=\"3817\"
425
- tripTag=\"5234662\" />\n <prediction epochTime=\"1353522540000\" seconds=\"1327\"
426
- minutes=\"22\" isDeparture=\"true\" affectedByLayover=\"true\" dirTag=\"38_IB3\"
427
- vehicle=\"6407\" block=\"3804\" tripTag=\"5234664\" />\n <prediction epochTime=\"1353523500000\"
428
- seconds=\"2287\" minutes=\"38\" isDeparture=\"true\" affectedByLayover=\"true\"
429
- dirTag=\"38_IB3\" vehicle=\"6259\" block=\"3805\" tripTag=\"5234666\" />\n <prediction
430
- epochTime=\"1353524460000\" seconds=\"3247\" minutes=\"54\" isDeparture=\"true\"
431
- affectedByLayover=\"true\" dirTag=\"38_IB3\" vehicle=\"6418\" block=\"3807\"
432
- tripTag=\"5234668\" />\n <prediction epochTime=\"1353525360000\" seconds=\"4147\"
433
- minutes=\"69\" isDeparture=\"true\" affectedByLayover=\"true\" dirTag=\"38_IB3\"
434
- vehicle=\"6421\" block=\"3809\" tripTag=\"5234670\" />\n </direction>\n<message
435
- text=\"sfmta.com or 3 1 1 for Muni info\"/>\n<message text=\"PROOF OF PAYMENT
436
- is required when on a Muni vehicle or in a station\"/>\n</predictions>\n</body>\n"
437
- http_version:
438
- recorded_at: Wed, 21 Nov 2012 18:06:55 GMT
439
- recorded_with: VCR 2.0.0.rc1