Пример #1
0
        public string Get()
        {
            List <BusRouteQuery> allRoutes = new List <BusRouteQuery>();

            Parallel.ForEach(StaticInfo.allRoutes, (stop) =>
            {
                string op = GetOperator(stop);

                WebRequest request = WebRequest.Create($"https://data.smartdublin.ie/cgi-bin/rtpi/routeinformation?routeid={stop}&operator={op}&format=json");
                using (var sr = new StreamReader(request.GetResponse().GetResponseStream()))
                {
                    allRoutes.Add(BusRouteQuery.FromJson(sr.ReadToEnd()));
                }
            });

            AllStopsOutput output = new AllStopsOutput();

            foreach (BusRouteQuery data in allRoutes)
            {
                foreach (BusRouteQueryResult routeData in data.Results)
                {
                    foreach (Stop busStopData in routeData.Stops)
                    {
                        if (!AlreadyContainsID(output, busStopData))
                        {
                            output.BusStopDataResults.Add(new AllStopsOutput.StopReduced(busStopData.Stopid, busStopData.Shortname,
                                                                                         busStopData.Fullname, busStopData.Latitude, busStopData.Longitude));
                        }
                    }
                }
            }

            output.StopCount = output.BusStopDataResults.Count;
            return(JsonConvert.SerializeObject(output, Formatting.Indented));
        }
Пример #2
0
        public string Get(string id)
        {
            ServicePointManager
            .ServerCertificateValidationCallback +=
                (sender, cert, chain, sslPolicyErrors) => true;

            string busOperator = "";

            if (StaticInfo.bacRoutes.Contains(id))
            {
                busOperator = "bac";
            }
            else if (StaticInfo.gadRoutes.Contains(id))
            {
                busOperator = "gad";
            }
            else
            {
                //this shit will fail, handle appropriately
            }

            WebRequest request = WebRequest.Create($"https://data.smartdublin.ie/cgi-bin/rtpi/routeinformation?routeid={id}&operator={busOperator}&format=json");

            using (var sr = new StreamReader(request.GetResponse().GetResponseStream()))
            {
                var brq = BusRouteQuery.FromJson(sr.ReadToEnd());
                BusRouteQueryReduced brqr = new BusRouteQueryReduced();
                brqr.Results = new List <BusRouteQueryReduced.ResultReduced>();

                int    count1      = 0;
                int    count2      = 0;
                string destination = "";
                string start       = "";

                foreach (BusRouteQueryResult result in brq.Results)
                {
                    if (result.Lastupdated.Contains("/2019"))
                    {
                        if (result.Stops.Length > count1)
                        {
                            count2      = count1;
                            count1      = result.Stops.Length;
                            destination = result.Destination;
                            start       = result.Origin;
                        }
                        else if (result.Stops.Length > count2)
                        {
                            count2 = result.Stops.Length;
                        }
                    }
                }

                brqr.Numberofresults = count1;
                brqr.Destination     = destination;
                brqr.Origin          = start;
                brqr.NotPlaces       = new List <string>();
                foreach (BusRouteQueryResult result in brq.Results)
                {
                    var stops = new List <BusRouteQueryReduced.ResultReduced.StopReduced>();

                    if (result.Lastupdated.Contains("/2019"))
                    {
                        //if ((result.Destination.Equals(destination) && result.Origin.Equals(start))
                        //    || (result.Destination.Equals(start) && result.Origin.Equals(destination)))
                        if (result.Stops.Length == count1 || result.Stops.Length == count2)
                        {
                            foreach (Stop stop in result.Stops)
                            {
                                stops.Add(new BusRouteQueryReduced.ResultReduced.StopReduced(stop.Stopid, stop.Fullname, stop.Latitude, stop.Longitude));
                            }
                            brqr.Results.Add(new BusRouteQueryReduced.ResultReduced(result.Destination, stops));
                        }
                        else
                        {
                            if (result.Stops.Length >= 50)
                            {
                                brqr.NotCount = result.Stops.Length;
                                brqr.NotPlaces.Add(result.Destination);
                                //brf.NotPlaces.Add("test");
                            }
                        }
                    }
                }
                return(JsonConvert.SerializeObject(brqr, Formatting.Indented));
            }
        }