コード例 #1
0
        public async Task <string> GetBusArrivalTime(int mRoute, string busStopName, char direction = 't')
        {
            _routeInfo = await GetRouteInfo(mRoute, direction);

            var time = _routeInfo.BusStopList.FirstOrDefault(bs => bs.Name == busStopName).ArrivalTime;

            return($"Ваш автобус прибудет в {time}");
        }
コード例 #2
0
        private async Task <TrafficRouteInfoModel> GetRouteInfo(int routeNumber, char direction)
        {
            _response = await _client.GetAsync($"https://mu-kgt.ru/informing/wap/marsh/?m={routeNumber}&action=getMarshData");

            if (_response.IsSuccessStatusCode)
            {
                var resp = await _response.Content.ReadAsStringAsync();

                if (resp == "[]")
                {
                    return(null);
                }
                _rootElement = JsonConvert.DeserializeObject <RouteInfoModel>(resp);
                var routeInfo = new TrafficRouteInfoModel();

                if (direction == 't')
                {
                    routeInfo.ActiveBuses = _rootElement.TrafficAndBusStopInfo.DirectRoute
                                            .Where(x => x.Type == "ts")
                                            .Select(x => new ActiveBusModel
                    {
                        Model  = x.BusModel,
                        Number = x.BusNumber
                    });
                    routeInfo.BusStopList = _rootElement.TrafficAndBusStopInfo.DirectRoute
                                            .Where(x => x.Type == "stop")
                                            .Select(x => new BusStopModel
                    {
                        Name        = x.Title,
                        ArrivalTime = x.ArrivalTime == " " ? new TimeSpan(0, 0, 0) : TimeSpan.Parse(x.ArrivalTime)
                    });
                }
                else
                {
                    routeInfo.ActiveBuses = _rootElement.TrafficAndBusStopInfo.ReturnRoute
                                            .Where(x => x.Type == "ts")
                                            .Select(x => new ActiveBusModel
                    {
                        Model  = x.BusModel,
                        Number = x.BusNumber
                    });
                    routeInfo.BusStopList = _rootElement.TrafficAndBusStopInfo.ReturnRoute
                                            .Where(x => x.Type == "stop")
                                            .Select(x => new BusStopModel
                    {
                        Name        = x.Title,
                        ArrivalTime = x.ArrivalTime == " " ? new TimeSpan(0, 0, 0) : TimeSpan.Parse(x.ArrivalTime)
                    });
                }
                return(routeInfo);
            }
            return(null);
        }
コード例 #3
0
        public async Task <int?> GetActiveBusesCount(int routeNumber, char direction = 't')
        {
            _routeInfo = await GetRouteInfo(routeNumber, direction);

            return(_routeInfo?.ActiveBuses.Count());
        }
コード例 #4
0
        public async Task <IEnumerable <string> > GetBusStopList(int routeNumber, char direction)
        {
            _routeInfo = await GetRouteInfo(routeNumber, direction);

            return(_routeInfo?.BusStopList.Select(bs => bs.Name));
        }