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"); } }
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"); } }