73 lines
2.3 KiB
JavaScript
73 lines
2.3 KiB
JavaScript
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
|
|
};
|