Files
bot-whatsapp/packages/provider/src/venom/utils.js
2023-01-09 19:43:22 +01:00

81 lines
2.2 KiB
JavaScript

const { writeFile, createWriteStream } = require('fs')
const { tmpdir } = require('os')
const http = require('http')
const https = require('https')
const combineImage = require('combine-image')
const venomCleanNumber = (number, full = false) => {
number = number.replace('@c.us', '')
number = !full ? `${number}@c.us` : `${number}`
return number
}
const venomGenerateImage = async (base, name = 'qr.png') => {
const PATH_QR = `${process.cwd()}/${name}`
const matches = base.match(/^data:([A-Za-z-+\/]+);base64,(.+)$/)
if (matches.length !== 3) {
return new Error('Invalid input string')
}
let response = {}
response.type = matches[1]
response.data = new Buffer.from(matches[2], 'base64')
const writeFilePromise = () =>
new Promise((resolve, reject) => {
writeFile(PATH_QR, response['data'], 'binary', (err) => {
if (err != null) reject('ERROR_QR_GENERATE')
resolve(true)
})
})
await writeFilePromise()
const cleanImage = await combineImage([PATH_QR], {
margin: 15,
color: 0xffffffff,
})
cleanImage.write(PATH_QR)
}
/**
* Incompleta
* Descargar archivo multimedia para enviar
* @param {*} url
* @returns
*/
const venomDownloadMedia = (url) => {
return new Promise((resolve, reject) => {
const ext = url.split('.').pop()
const checkProtocol = url.includes('https:')
const handleHttp = checkProtocol ? https : http
const name = `tmp-${Date.now()}.${ext}`
const fullPath = `${tmpdir()}/${name}`
const file = createWriteStream(fullPath)
handleHttp.get(url, function (response) {
response.pipe(file)
file.on('finish', function () {
file.close()
resolve(fullPath)
})
file.on('error', function () {
console.log('errro')
file.close()
reject(null)
})
})
})
}
const venomisValidNumber = (rawNumber) => {
const regexGroup = /\@g.us\b/gm
const exist = rawNumber.match(regexGroup)
return !exist
}
module.exports = {
venomCleanNumber,
venomGenerateImage,
venomisValidNumber,
venomDownloadMedia,
}