Пример #1
0
        protected async Task <List <Car> > TuroSearch(GeoPoint location, string make = null, string model = null)
        {
            var restTasks = new List <Task <IRestResponse> >();
            var client    = new RestClient(DOMAIN);

            string[] sorts = { "RELEVANCE", "PRICE_LOW", "PRICE_HIGH" };
            double[,] array = { { 0, 0 }, { 0.2, 0 }, { 0, 0.2 }, { -0.2, 0 }, { 0, -0.2 } };
            for (int i = 0; i < 5; i++)
            {
                var loc = location.Add(array[i, 0], array[i, 1]);
                foreach (var sort in sorts)
                {
                    var request = new TuroRequest(loc, 400, make, model, sort);
                    restTasks.Add(client.ExecuteTaskAsync(request));
                }
            }

            var cars = new List <Car>();

            foreach (var restTask in restTasks)
            {
                var     resp = await restTask;
                dynamic data = JsonConvert.DeserializeObject(resp.Content);
                foreach (var item in data.list)
                {
                    long id = (long)item.vehicle.id;
                    if (!cars.Any(x => x.id == id))
                    {
                        cars.Add(new Car
                        {
                            id          = id,
                            make        = item.vehicle.make,
                            model       = item.vehicle.model,
                            year        = (int)item.vehicle.year,
                            tripsTaken  = (int)item.renterTripsTaken,
                            dailyPrice  = (double)item.rate.averageDailyPrice,
                            createdTime = FromUnixTime((double)item.vehicle.listingCreatedTime)
                        });
                    }
                }
            }
            return(cars);
        }