const axios = require('axios'); /** * Busca una receta por nombre utilizando la API de TheMealDB. * @param {String} name - Nombre de la receta a buscar. * @returns {Object} - Objeto de receta encontrado. * @throws {Error} - Si no se encuentra la receta o hay un error en la solicitud. */ const searchMealByName = async (name) => { try { const response = await axios.get('https://www.themealdb.com/api/json/v1/1/search.php', { params: { s: name } }); if (!response.data.meals) { throw new Error('No se encontraron recetas para tu búsqueda.'); } return response.data.meals[0]; // Retorna la primera receta encontrada } catch (error) { throw new Error(`Error al buscar la receta: ${error.message}`); } }; /** * Obtiene una receta aleatoria utilizando la API de TheMealDB. * @returns {Object} - Objeto de receta aleatoria. * @throws {Error} - Si hay un error en la solicitud. */ const getRandomMeal = async () => { try { const response = await axios.get('https://www.themealdb.com/api/json/v1/1/random.php'); if (!response.data.meals) { throw new Error('No se pudo obtener una receta aleatoria.'); } return response.data.meals[0]; } catch (error) { throw new Error(`Error al obtener una receta aleatoria: ${error.message}`); } }; /** * Filtra recetas por ingrediente principal utilizando la API de TheMealDB. * @param {String} ingredient - Ingrediente principal para filtrar recetas. * @returns {Array} - Lista de recetas que contienen el ingrediente especificado. * @throws {Error} - Si no se encuentran recetas o hay un error en la solicitud. */ const filterByIngredient = async (ingredient) => { try { const response = await axios.get('https://www.themealdb.com/api/json/v1/1/filter.php', { params: { i: ingredient } }); if (!response.data.meals) { throw new Error('No se encontraron recetas con ese ingrediente.'); } return response.data.meals; } catch (error) { throw new Error(`Error al filtrar por ingrediente: ${error.message}`); } }; module.exports = { searchMealByName, getRandomMeal, filterByIngredient };