Files
cod-api/db/notification_wa.db.js
2026-01-12 13:11:45 +07:00

72 lines
1.6 KiB
JavaScript

// db/notification_wa.db.js
const { default: axios } = require('axios');
const CryptoJS = require('crypto-js');
const https = require('https');
const httpsAgent = new https.Agent({
rejectUnauthorized: false,
});
const generateTokenRedirect = async (userPhone, userName, id) => {
const plain = {
user_phone: userPhone,
user_name: userName,
id
}
const tokenCrypt = CryptoJS.AES.encrypt(JSON.stringify(plain), process.env.VITE_KEY_SESSION).toString();
return tokenCrypt
}
const shortUrltiny = async (encodedToken) => {
const url = `${process.env.ENDPOINT_FE}/redirect?token=${encodedToken}`
const encodedUrl = encodeURIComponent(url); // ⬅️ Encode dulu!
const response = await axios.get(`https://tinyurl.com/api-create.php?url=${encodedUrl}`, { httpsAgent });
let shortUrl = response.data;
if (!shortUrl.startsWith('http')) {
shortUrl = 'https://' + shortUrl;
}
return shortUrl
}
const sendNotifikasi = async (phone, message) => {
const payload = {
phone: phone,
message: message
};
// console.log('payload', payload);
const endPointWhatsapp = process.env.ENDPOINT_WHATSAPP;
try {
const response = await axios.post(endPointWhatsapp, payload, { httpsAgent });
return {
success: true,
statusCode: response.status, // 200, 201, dll
data: response.data
};
} catch (error) {
return {
success: false,
statusCode: error.response?.status || null,
errorCode: error.code || null, // ECONNABORTED, dll
message: error.response?.data || error.message
};
}
};
module.exports = {
generateTokenRedirect,
shortUrltiny,
sendNotifikasi,
};