diff --git a/app.js b/app.js index e49b395..2b684ea 100644 --- a/app.js +++ b/app.js @@ -8,6 +8,7 @@ const qrcode = require('qrcode-terminal'); const { Client } = require('whatsapp-web.js'); const mysqlConnection = require('./config/mysql') const { middlewareClient } = require('./middleware/client') +const { generateImage } = require('./controllers/handle') const { connectionReady, connectionLost } = require('./controllers/connection') const { saveMedia } = require('./controllers/save') const { getMessages, responseMessages, bothResponse } = require('./controllers/flows') @@ -15,6 +16,7 @@ const { sendMedia, sendMessage, lastTrigger } = require('./controllers/send') const app = express(); app.use(express.json()) +app.use('/',require('./routes/web')) const port = process.env.PORT || 3000 const SESSION_FILE_PATH = './session.json'; @@ -128,10 +130,11 @@ const withOutSession = () => { } }); - client.on('qr', qr => { + client.on('qr', qr => generateImage(qr, () => { qrcode.generate(qr, { small: true }); - }); - + console.log(`Ver QR http://localhost:${port}/qr`) + })) + client.on('ready', () => { connectionReady() listenMessage() diff --git a/controllers/handle.js b/controllers/handle.js index dc5ab6d..c44fe29 100644 --- a/controllers/handle.js +++ b/controllers/handle.js @@ -1,6 +1,7 @@ const http = require('http'); // or 'https' for https:// URLs const https = require('https'); // or 'https' for https:// URLs const fs = require('fs'); +const qr = require('qr-image') const cleanNumber = (number) => { @@ -14,10 +15,9 @@ const saveExternalFile = (url) => new Promise((resolve, reject) => { const checkProtocol = url.split('/').includes('https:'); const handleHttp = checkProtocol ? https : http; const name = `${Date.now()}.${ext}`; - const file = fs.createWriteStream(`./mediaSend/${name}`); + const file = fs.createWriteStream(`${__dirname}/../mediaSend/${name}`); console.log(url) handleHttp.get(url, function(response) { - console.log('aaaa') response.pipe(file); file.on('finish', function() { file.close(); // close() is async, call cb after close completes. @@ -30,4 +30,13 @@ const saveExternalFile = (url) => new Promise((resolve, reject) => { }); }); }) -module.exports = {cleanNumber, saveExternalFile} \ No newline at end of file + +const generateImage = (base64, cb = () => {}) => { + let qr_svg = qr.image(base64, { type: 'svg', margin: 4 }); + qr_svg.pipe(require('fs').createWriteStream('./mediaSend/qr-code.svg')); + console.log(`⚡ Recuerda que el QR se actualiza cada minuto ⚡'`); + console.log(`⚡ Actualiza F5 el navegador para mantener el mejor QR⚡`); + cb() +} + +module.exports = {cleanNumber, saveExternalFile, generateImage} \ No newline at end of file diff --git a/controllers/web.js b/controllers/web.js index 0824f42..8718049 100644 --- a/controllers/web.js +++ b/controllers/web.js @@ -1,3 +1,4 @@ +const fs = require('fs') const { sendMessage } = require('../controllers/send') const sendMessagePost = (req, res) => { @@ -7,4 +8,9 @@ const sendMessagePost = (req, res) => { res.send({ status: 'Enviado!' }) } -module.exports = { sendMessagePost } \ No newline at end of file +const getQr = (req, res) => { + res.writeHead(200, { 'content-type': 'image/svg+xml' }); + fs.createReadStream(`${__dirname}/../mediaSend/qr-code.svg`).pipe(res); +} + +module.exports = { sendMessagePost, getQr } \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index a94b5d9..c52d5f2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3095,6 +3095,11 @@ } } }, + "qr-image": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/qr-image/-/qr-image-3.2.0.tgz", + "integrity": "sha1-n6gpW+rlDEoUnPn5CaHbRkqGcug=" + }, "qrcode-terminal": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/qrcode-terminal/-/qrcode-terminal-0.12.0.tgz", diff --git a/package.json b/package.json index ee1b595..3590feb 100644 --- a/package.json +++ b/package.json @@ -20,6 +20,7 @@ "moment": "^2.29.1", "mysql": "^2.18.1", "nanoid": "^3.1.32", + "qr-image": "^3.2.0", "qrcode-terminal": "^0.12.0", "socket.io": "^4.4.1", "whatsapp-web.js": "^1.15.3", diff --git a/routes/web.js b/routes/web.js new file mode 100644 index 0000000..32df0e5 --- /dev/null +++ b/routes/web.js @@ -0,0 +1,7 @@ +const express = require('express'); +const router = express.Router() +const { getQr } = require('../controllers/web') + +router.use('/qr', getQr) + +module.exports = router \ No newline at end of file