Exemplo n.º 1
0
        public async Task<ResultSet> GetAllCarParks()
        {
            try
            {
                const string CacheName = "GetAllCarParks";
                var cachedResult = HttpContext.Current.Cache[CacheName] as ResultSet;

                if (cachedResult != null)
                {
                    return cachedResult;
                }

                var client = new HttpClient();
                client.DefaultRequestHeaders.Add("DevKey", DevKey);
                client.DefaultRequestHeaders.Add("AppKey", AppKey);
                client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("text/json"));
                client.BaseAddress = this.baseAddress;

                var pageIndex = 0;
                var pageSize = 10;
                var endOfList = false;

                var items = new List<Feature>();

                while (!endOfList)
                {
                    var query = string.Format("Carparks/?pageIndex={0}&pageSize={1}", pageIndex, pageSize);
                    var response = client.GetAsync(query).Result;

                    // If it fails - outputs the request string followed by the Http response
                    if (response.StatusCode != System.Net.HttpStatusCode.OK)
                    {
                        var result = String.Format("{0}{1} \n{2}", baseAddress, query, response);
                        throw new HttpException(result);
                    }

                    // If it gets an OK status Outputs the json/xml recieved
                    var json = await response.Content.ReadAsStringAsync();
                    var data = (IEnumerable<CarPark>)JsonConvert.DeserializeObject(json, typeof(IEnumerable<CarPark>));
                    items.AddRange(this.GetFeaturesFromCarParks(data));

                    endOfList = !data.Any();
                    pageIndex++;
                }

                var resultSet = new ResultSet(items);

                HttpContext.Current.Cache.Insert(CacheName, resultSet, null, DateTime.Now.AddMinutes(5), TimeSpan.Zero);
                return resultSet;
            }
            catch (Exception ex)
            {
                throw new HttpException("Error");
            }
        }
Exemplo n.º 2
0
        public async Task<ResultSet> GetAllBuses()
        {
            try
            {
                var client = new HttpClient();
                client.DefaultRequestHeaders.Add("DevKey", DevKey);
                client.DefaultRequestHeaders.Add("AppKey", AppKey);
                client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("text/json"));
                client.BaseAddress = this.baseAddress;

                var route = 1;

                var items = new List<Feature>();

                while (route <= 3)
                {
                    var query = string.Format("routes/{0}/buses", route);
                    var response = client.GetAsync(query).Result;

                    // If it fails - outputs the request string followed by the Http response
                    if (response.StatusCode != System.Net.HttpStatusCode.OK)
                    {
                        var result = String.Format("{0}{1} \n{2}", baseAddress, query, response);
                        throw new HttpException(result);
                    }

                    // If it gets an OK status Outputs the json/xml recieved
                    var json = await response.Content.ReadAsStringAsync();
                    var data = (IEnumerable<MetroShuttle>)JsonConvert.DeserializeObject(json, typeof(IEnumerable<MetroShuttle>));
                    items.AddRange(this.GetFeaturesFromMetroShuttle(data));

                    route++;
                }

                var resultSet = new ResultSet(items);
                return resultSet;
            }
            catch (Exception ex)
            {
                throw new HttpException("Error");
            }
        }