Example #1
0
        public void GetPredictionsFromService(IList <Stop> stops)
        {
            foreach (var stop in stops)
            {
                var x = EndPoints.PredictionsUrl(stop.AgencyTag, stop.RouteTag, stop.Tag);

                var xml = _client.GetStringAsync(EndPoints.PredictionsUrl(stop.AgencyTag, stop.RouteTag, stop.Tag)).Result;

                var doc = XDoc.LoadXml(xml);

                /*
                 * <prediction tripTag="7679393"
                 * block="9718"
                 * vehicle="1537"
                 * dirTag="N____O_F00"
                 * isDeparture="false" minutes="20" seconds="1220" epochTime="1503625693370" vehiclesInConsist="2"/>
                 */
                List <Prediction> preds = new List <Prediction>();


                foreach (var predNode in doc.GetDescendantElements("prediction"))
                {
                    var pred = new Prediction();
                    pred.Minutes     = predNode.GetAttribute("minutes");
                    pred.Seconds     = predNode.GetAttribute("seconds");
                    pred.EpochTime   = predNode.GetAttribute("epochTime");
                    pred.IsDeparture = predNode.GetAttribute("isDeparture");
                    pred.DirTag      = predNode.GetAttribute("dirTag");
                    pred.Vehicle     = predNode.GetAttribute("vehicle");
                    pred.LocalTime   = UtilsHelper.Instance.ConvertUnixTimeStamp(pred.EpochTime);
                    preds.Add(pred);
                }
                stop.Predictions.ReplaceRange(preds.OrderBy(t => Convert.ToDouble(t.EpochTime)));
                stop.Prediction1 = preds.Count >= 1 ? preds[0] : null;
                stop.Prediction2 = preds.Count >= 2 ? preds[1] : null;
                stop.Prediction3 = preds.Count >= 3 ? preds[2] : null;
            }
        }