private static void navigate() { string uri = "http://datc-rest.azurewebsites.net"; var client = new HttpClient(); client.DefaultRequestHeaders.Add("accept", "application/hal+json"); string entryPoint = uri + "/breweries/"; var response = client.GetAsync(entryPoint).Result; var data = response.Content.ReadAsStringAsync().Result; var result = (JObject)JsonConvert.DeserializeObject(data); var breweriesInfo = (RootObject)result; int breweryNumber = breweriesInfo.Embedded.Brewery.Count(); int breweryId = 0; var beerInfo = new RootObjectBeers(0, 0, 0, new BeerEmbedded(null)); int beerId = 0; do { Console.Clear(); Console.WriteLine("Informations about " + breweryNumber + "breweries"); Console.WriteLine("Choose one to explore? (1, 2, 3... or " + breweryNumber + ")"); Console.Write("Your option: "); breweryId = Int32.Parse(Console.ReadLine()); } while (breweryId <= 0 || breweryId > breweryNumber); Console.WriteLine(); Console.WriteLine("Brewery name: " + breweriesInfo.Embedded.Brewery[breweryId - 1].Name); Console.Write("Press any key..."); Console.ReadLine(); do { Console.Clear(); Console.WriteLine("========== List of beers from brewery with id " + breweryId + "==========="); string apiBeers = uri + breweriesInfo.Embedded.Brewery[breweryId - 1].Links.Beers.Href; var responseApi = client.GetAsync(apiBeers).Result; var dataApi = responseApi.Content.ReadAsStringAsync().Result; var resultApi = (JObject)JsonConvert.DeserializeObject(dataApi); beerInfo = (RootObjectBeers)resultApi; Console.WriteLine("There are " + beerInfo.Embedded.Beer.Count() + " available beers in the brewery " + breweriesInfo.Embedded.Brewery[breweryId - 1].Name); Console.WriteLine("Choose one to explore "); Console.Write("Your choice: "); beerId = Int32.Parse(Console.ReadLine()); } while (beerId <= 0 || beerId > beerInfo.Embedded.Beer.Count()); Console.WriteLine(); Console.WriteLine("Beer name: " + beerInfo.Embedded.Beer[beerId - 1].Name); Console.WriteLine("Beer style: " + beerInfo.Embedded.Beer[beerId - 1].StyleName); findBeersWithSameStyle(beerId, uri, client, beerInfo); Console.Write("Press any key..."); Console.ReadLine(); }
static void Main(string[] args) { int option; do { Console.Clear(); option = Menu(); switch (option) { case 1: string uri = "http://datc-rest.azurewebsites.net"; var client = new HttpClient(); client.DefaultRequestHeaders.Add("accept", "application/hal+json"); string entryPoint = uri + "/breweries/"; var response = client.GetAsync(entryPoint).Result; var data = response.Content.ReadAsStringAsync().Result; var result = (JObject)JsonConvert.DeserializeObject(data); var BreweriesInfo = (RootObject)result; int BreweryNumber = BreweriesInfo._embedded.brewery.Count(); int BreweryId = 0; var beerInfo = new RootObjectBeers(0, 0, 0, new BeerEmbedded(null)); int BeerId = 0; do { Console.Clear(); Console.WriteLine("There are informations for a total amount of " + BreweryNumber + " breweries."); Console.WriteLine("Which one of the breweries would you like to explore? (1, 2, 3... or " + BreweryNumber + ")"); Console.Write("The wanted id: "); BreweryId = Int32.Parse(Console.ReadLine()); } while (BreweryId <= 0 || BreweryId > BreweryNumber); Console.WriteLine(); Console.WriteLine("Brewery name: " + BreweriesInfo._embedded.brewery[BreweryId - 1].Name); Console.Write("Press any key.."); Console.ReadLine(); do { Console.Clear(); Console.WriteLine("*************** List of beers from the brewery " + BreweryId + " ***************"); string apiBeers = uri + BreweriesInfo._embedded.brewery[BreweryId - 1]._links.beers.href; var responseApi = client.GetAsync(apiBeers).Result; var dataApi = responseApi.Content.ReadAsStringAsync().Result; var resultApi = (JObject)JsonConvert.DeserializeObject(dataApi); beerInfo = (RootObjectBeers)resultApi; Console.WriteLine("There exists " + beerInfo._embedded.beer.Count() + " beers available at the brewery " + BreweriesInfo._embedded.brewery[BreweryId - 1].Name + "."); Console.WriteLine("Which one of them do you want to explore? "); Console.Write("The wanted id: "); BeerId = Int32.Parse(Console.ReadLine()); } while (BeerId <= 0 || BeerId > beerInfo._embedded.beer.Count()); Console.WriteLine(); Console.WriteLine("Beer name: " + beerInfo._embedded.beer[BeerId - 1].Name); Console.WriteLine("Beer style: " + beerInfo._embedded.beer[BeerId - 1].StyleName); beersWithTheSameStyleAsThis(BeerId, uri, client, beerInfo); Console.Write("Press any key.."); Console.ReadLine(); break; case 2: client = new HttpClient(); Console.Clear(); Console.WriteLine("What beer do you want to add?"); Console.WriteLine("The name of the beer: "); string AddedBeerName = Console.ReadLine(); string beer = "{\"Name\":\"" + AddedBeerName + "\"}"; var postResponse = client.PostAsJsonAsync("http://datc-rest.azurewebsites.net/beers", beer); break; case 3: return; } } while (option != 0); }
static void beersWithTheSameStyleAsThis(int beerId, string uri, HttpClient httpClient, RootObjectBeers beerInfo) { string entryPoint = uri + beerInfo._embedded.beer[beerId - 1]._links.style.href + "/beers"; var response = httpClient.GetAsync(entryPoint).Result; var data = response.Content.ReadAsStringAsync().Result; var results = (JObject)JsonConvert.DeserializeObject(data); int totalOfBeers = (int)results["TotalResults"]; if (totalOfBeers == 0) { Console.WriteLine("There are no other beers with this style."); } else if (totalOfBeers == 1) { Console.WriteLine("This is the only beer having this style."); } else { Console.WriteLine("There are " + totalOfBeers + " beers with this style."); } }
private static void findBeersWithSameStyle(int beerId, string uri, HttpClient client, RootObjectBeers beerInfo) { string entryPoint = uri + beerInfo.Embedded.Beer[beerId - 1].Links.Style.Href; var response = client.GetAsync(entryPoint).Result; var data = response.Content.ReadAsStringAsync().Result; var results = (JObject)JsonConvert.DeserializeObject(data); int totalNumberOfBeers = (int)results["totalResults"]; if (totalNumberOfBeers == 0) { Console.WriteLine("No beer with this syle"); } else if (totalNumberOfBeers >= 1) { Console.WriteLine(totalNumberOfBeers + "beer(s) with this style"); } }