///*** PARTEA RETETE ***/// // imi returneaza un dictionar cu informatiile dintr-o reteta dupa id // am putea returna reteta si nu ca dictionar, dar contine strIngredient1, strIngredient2, etc // deci e mai usor sa scriem dictionar["strIngredient"+i] decat sa avem 20 de campuri // pentru fiecare ingredient public static async Task <Dictionary <string, string> > LoadRecipe(int reteta_id = 0) { // verificam daca avem conexiune la internet var current = Connectivity.NetworkAccess; if (reteta_id != 0 && current == NetworkAccess.Internet) { // avem conexiune la internet string url = $"https://www.themealdb.com/api/json/v1/1/lookup.php?i=" + reteta_id; using (var client = new HttpClient()) using (var request = new HttpRequestMessage()) { request.Method = HttpMethod.Get; request.RequestUri = new Uri(url); var response = await client.SendAsync(request); //var responseBody = await response.Content.ReadAsStringAsync(); // deoarece cooking object e o lista de obiecte, vom lua doar primul element, // deoarece in acest caz vom avea doar un obiect preluat de la API, nu o lista // cum era la ingrediente CookingObject cookingModel = await response.Content.ReadAsAsync <CookingObject>(); //System.Diagnostics.Debug.WriteLine(">>>>>>>" + cookingModel.Meals[0].ToString()); // este posibil ca cookingmodel sa fie null, in acel caz nu vrem sa returnam prostii // asa ca vom returna un dictionar cu strMeal gol // {"meals":null} if (cookingModel.Meals != null) { string str = cookingModel.Meals[0].ToString(); string meals = str.Trim(new char[] { '[', ']' }); var recipe = JsonConvert.DeserializeObject <Dictionary <string, string> >(meals); //System.Diagnostics.Debug.WriteLine(">>>>>>>" + recipe["strMeal"].ToString()); return(recipe); } else { //System.Diagnostics.Debug.WriteLine(">>>>>>ERROR: CookingModel null exception."); // returnam un dictionar gol cu strMeal = null pt ca aia ne-o verifica mai incolo return(new Dictionary <string, string> { ["strMeal"] = null }); //throw new Exception(response.ReasonPhrase); } } } else { // nu avem conexiune la internet si trimitem o reteta goala return(new Dictionary <string, string> { }); } }
// imi returneaza lista cu toate ingredientele public static async Task <List <Ingrediente> > LoadIngredients() { // verificam daca avem conexiune la internet var current = Connectivity.NetworkAccess; if (current == NetworkAccess.Internet) { // avem conexiune la internet string url = $"https://www.themealdb.com/api/json/v1/1/list.php?i=list"; //System.Diagnostics.Debug.WriteLine(">>>>>>>> APIP2 - 0 "); using (var client = new HttpClient()) using (var request = new HttpRequestMessage()) { request.Method = HttpMethod.Get; request.RequestUri = new Uri(url); var response = await client.SendAsync(request); //var responseBody = await response.Content.ReadAsStringAsync(); List <Ingrediente> listaIngrediente = new List <Ingrediente>(); CookingObject cookingModel = await response.Content.ReadAsAsync <CookingObject>(); //System.Diagnostics.Debug.WriteLine(">>>>> HERE 6: " + cookingModel.Meals[1]); foreach (object obj in cookingModel.Meals) { // convertim fiecare obiect din ingList.Meals la un dictionar // pt a putea copia ingredientele respective intr-un ingredient // pe care le adaugam in continuare la o lista separata care va fi transmisa //System.Diagnostics.Debug.WriteLine(">>>>>>0 " + obj.ToString()); var values = JsonConvert.DeserializeObject <Dictionary <string, string> >(obj.ToString()); //System.Diagnostics.Debug.WriteLine(">>>>>>1 " + values["idIngredient"]); var ingredient = new Ingrediente { IdIngredient = int.Parse(values["idIngredient"]), StrIngredient = values["strIngredient"] }; listaIngrediente.Add(ingredient); //System.Diagnostics.Debug.WriteLine(">>>>>>>2 " + ingredient.StrIngredient); } return(listaIngrediente); } } else { // nu avem conexiune la internet return(new List <Ingrediente>()); } }
//imi returneaza o lista de filtre de tip category public static async Task <List <Filtre.Categorii> > LoadFilters_cat() { // verificam daca avem conexiune la internet var current = Connectivity.NetworkAccess; if (current == NetworkAccess.Internet) { string url = $"https://www.themealdb.com/api/json/v1/1/list.php?" + "c=list"; using (var client = new HttpClient()) using (var request = new HttpRequestMessage()) { request.Method = HttpMethod.Get; request.RequestUri = new Uri(url); var response = await client.SendAsync(request); List <Filtre.Categorii> listaFiltre_cat = new List <Filtre.Categorii>(); CookingObject cookingModel = await response.Content.ReadAsAsync <CookingObject>(); //System.Diagnostics.Debug.WriteLine(">>>>>>>" + cookingModel.Meals.ToString()); if (cookingModel.Meals != null) { foreach (object obj in cookingModel.Meals) { string str = obj.ToString(); string meals = str.Trim(new char[] { '[', ']' }); var recipe = JsonConvert.DeserializeObject <Dictionary <string, string> >(meals); //System.Diagnostics.Debug.WriteLine(">>>>>>>" + recipe["strCategory"].ToString()); Filtre.Categorii filtru_cat = new Filtre.Categorii(); filtru_cat.StrCategory = recipe["strCategory"]; listaFiltre_cat.Add(filtru_cat); } } return(listaFiltre_cat); } } else { // nu avem conexiune la internet // vom returna o lista goala pt ca aplicatia sa poata continua return(new List <Filtre.Categorii>()); } }