Tecnologias Utilizadas para el proyecto: "node": "8.12.0", "npm": "6.4.1" "axios": "^0.19.0", "dotenv": "^8.2.0", "express": "^4.17.1", "lodash": "^4.17.15", "mongoose": "^5.7.13",
- Base de datos: mongoDB.
Ganymede recibe una "orden" en formato json con la siguiente estructura:
La orden es validada, y es guardaba en la base de datos, con estado "received". Luego es enviada a Themisto, y su estado es actualizado a "proccessing", para realizar la query del producto enviada en la orden en Mercadolibre. Themisto devuelve los resultados a Ganymede para ser procesados, en caso de traer resultados de las busquedas realizadas por Themisto atraves de Puppeteer, la orden es actualizada a estado "fullfilled", como así también los resultados de la búsqueda. En caso de no recibir resultados, su estado para a ser "failed". Finalemente Ganymede hace una request a la url enviada en el callback de la orden, donde se retorna en caso de ser "failed", solo el estado de la orden, y en caso de ser "Fullfilled", retorna la dirección de la orden correspondiente para ver los resultados de la búsqueda.
Direccion github: https://github.com/pepecachivache/ganymede.git Pasos: Crear un directorio nuevo. Para clonar el repositorio escribir en consola el siguiente comando:
git clone https://github.com/pepecachivache/ganymede.git
Para instalar las librerias, ir al directorio principal y ejecutar.
npm i
o
npm install
Crear archivo .env en el directorio raiz y escribir en el mismo:
NODE_ENV = development
Antes de crear los accesos a la base de datos, hay que crear una base de datos Mongo.
Yo utilice AtlasDB:
- Crear Cuenta.
- Crear un CLuster. 3.Crear la base de datos.
Crear dentro del directorio app, la carpeta config y dentro un archivo config.js para configurar los accesos a las bases de datos.
formato json ejemplo:
const dotenv = require('dotenv');
dotenv.config();
module.exports = {
development: {
connectionLimit: 10,
database: process.env.DATABASE || <'Escribir credenciales MongoDB'>,
},
Luego ir al directorio principal y ejecutar.
Para correr el servidor localmente ejecutar el siguiente comando:
npm run dev
El servidor comenzara a escuchar en el puerto 3000.
Para testear la api localmente pueden utilizar POSTMAN. Link de descarga: https://www.getpostman.com/downloads/
-
Colocar la url local: http://localhost:3000/api/product/search (POST)
-
En el header colocar:
key: Content-type value: application/json
- En la solapa body: Seleccionar formato raw y seleccionar el formato a enviar (JSON(Application/json))
{
"query": "Silla",
"provider": "easy",
"options": {
"user": "user",
"password": "pass"
},
"callbackUrl": "http://localhost:3000/api/results"
}
Si valida correctamente, el servicio retornará a modo de ejemplo:
{
"order": {
"options": {
"user": "user",
"password": "pass"
},
"query": "Silla",
"provider": "easy",
"callbackurl": "http://localhost:3000/api/results"
},
"status": "received",
"results": [],
"_id": "5de90f087b21fe001752ad6c"
}
Como prueba se creo en la base de datos una collection "users",user:"admin: y pass: "admin". Para esto cree una migration, que crea el usuario en la base de datos automaticamente. Este se puede realizar corriendo el comando node user.js dentro del directorio app/seeds/.
- Crear cuenta en heroku.
- Crear App.
- Descargar Heroky CLi.
- Inicializar repositorio(en caso de no existir)
- Agregar origin de heroku app.
- Agregar archivos.
- Commit archivos.
- Push to heroku .
https://ganymede.herokuapp.com/ Send Order: https://ganymede.herokuapp.com/api/product/search(POST) Search one Order : https://ganymede.herokuapp.com/api/product/search-order/{id}(POST) Search All Orders : https://ganymede.herokuapp.com/api/product/search-orders(GET) Search by category : https://ganymede.herokuapp.com/api//product/category/{category}(GET)
Imagenes respuesta servidor Heroku: