fix(provider): 🐛 create static site html qr

This commit is contained in:
Leifer Mendez
2022-12-16 20:59:16 +01:00
parent 1032a3b769
commit c7e56a4b13
10 changed files with 675 additions and 13 deletions

View File

@@ -11,7 +11,9 @@
],
"dependencies": {
"@bot-whatsapp/bot": "*",
"qr-image": "^3.2.0"
"body-parser": "^1.20.1",
"polka": "^0.5.2",
"serve-static": "^1.13.1"
},
"exports": {
"./mock": "./lib/mock/index.cjs",

View File

@@ -1,8 +1,16 @@
const banner = require('../../config/banner.rollup.json')
const { join } = require('path')
const { default: rollupPluginHTML } = require('@web/rollup-plugin-html')
const commonjs = require('@rollup/plugin-commonjs')
module.exports = [
{
input: join(__dirname, 'src', 'server', 'pages', 'index.html'),
output: {
dir: join(__dirname, 'lib', 'server', 'pages'),
},
plugins: [rollupPluginHTML()],
},
{
input: join(__dirname, 'src', 'web-whatsapp', 'index.js'),
output: {

View File

@@ -1,4 +1,5 @@
const { ProviderClass } = require('@bot-whatsapp/bot')
const { createHttpServer } = require('../server')
const pino = require('pino')
const mime = require('mime-types')
const fs = require('fs')
@@ -40,7 +41,10 @@ class BaileysProvider extends ProviderClass {
this.vendor.ev.on(
'connection.update',
async ({ qr, connection, lastDisconnect }) => {
if (qr) baileyGenerateImage(qr)
if (qr) {
baileyGenerateImage(qr)
createHttpServer()
}
if (connection === 'open') this.emit('ready', true)
if (lastDisconnect?.error) {
saveCreds()

View File

@@ -1,4 +1,4 @@
const { createWriteStream } = require('fs')
const { createWriteStream, existsSync } = require('fs')
const qr = require('qr-image')
const baileyCleanNumber = (number, full = false) => {

View File

@@ -0,0 +1,12 @@
const ProviderHTTPServer = require('./providerhttp.class')
/**
* Instanciamos clase de Server
* podriamos pasar port?
* @returns
*/
const createHttpServer = () => {
return new ProviderHTTPServer().start()
}
module.exports = { createHttpServer }

View File

@@ -0,0 +1,25 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>Sample Site</title>
<link
rel="stylesheet"
href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css"
integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T"
crossorigin="anonymous"
/>
<style>
body {
padding-top: 50px;
}
</style>
</head>
<body>
<div class="container">
<div class="jumbotron">
<h1>res.sendFile() Works!</h1>
</div>
</div>
</body>
</html>

View File

@@ -0,0 +1,56 @@
const polka = require('polka')
const { existsSync } = require('fs')
const { join } = require('path')
/**
* Servidor HTTP para exponder rutas (endpoints)
*/
class ProviderHTTPServer {
port = 4000
constructor() {}
/**
* Controlador para exponer la pagina de QR para escanear
* GET http://localhost:4000/qr
* @param {*} _
* @param {*} res
*/
qrController = (_, res) => {
try {
res.end('OK')
} catch (e) {
res.end('ERROR_QR_CONTROLLER')
}
}
/**
* Iniciar Server
* @returns
*/
start = () => {
try {
const paths = [
join(__dirname, 'server', 'pages'),
join(__dirname, '..', 'server', 'pages'),
]
const indexPath = paths.find((i) => existsSync(i))
const serve = require('serve-static')(indexPath)
polka()
.use(serve)
.get('/qr', this.qrController)
.listen(this.port, () => {
console.log(``)
console.log(
`[BOT Server]: Visita http://localhost:${this.port}/qr`
)
console.log(``)
})
return Promise.resolve()
} catch (e) {
return Promise.reject()
}
}
}
module.exports = ProviderHTTPServer

View File

@@ -1,4 +1,5 @@
const { ProviderClass } = require('@bot-whatsapp/bot')
const { createHttpServer } = require('../server')
const venom = require('venom-bot')
const {
venomCleanNumber,
@@ -59,6 +60,7 @@ class VenomProvider extends ProviderClass {
],
})
venomGenerateImage(qr)
createHttpServer()
}
/**