Exemplo n.º 1
0
        ///*** 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> {
                });
            }
        }
Exemplo n.º 2
0
        // 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>());
            }
        }
Exemplo n.º 3
0
        //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>());
            }
        }