qr express

This commit is contained in:
Leifer Mendez
2022-01-17 09:45:19 +01:00
parent effeb3d4e9
commit d3a086fc98
6 changed files with 38 additions and 7 deletions

9
app.js
View File

@@ -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()

View File

@@ -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}
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}

View File

@@ -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 }
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 }

5
package-lock.json generated
View File

@@ -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",

View File

@@ -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",

7
routes/web.js Normal file
View File

@@ -0,0 +1,7 @@
const express = require('express');
const router = express.Router()
const { getQr } = require('../controllers/web')
router.use('/qr', getQr)
module.exports = router