import express from 'express' import cors from 'cors' import bodyParser from 'body-parser' import amqp from 'amqplib' // import nodemailer from 'nodemailer' import SibApiV3Sdk from 'sib-api-v3-sdk' import dotenv from 'dotenv' dotenv.config() const app = express() const queuePaylater = process.env.QUEUE_PAYLATER const queueNota = process.env.QUEUE_NOTA const senderEmail = process.env.SENDER_EMAIL var defaultClient = SibApiV3Sdk.ApiClient.instance var apiKey = defaultClient.authentications['api-key'] apiKey.apiKey = process.env.SENDING_BLUE_API_KEY var apiInstance = new SibApiV3Sdk.TransactionalEmailsApi() var sendSmtpEmail = new SibApiV3Sdk.SendSmtpEmail() app.use(cors()) app.use(bodyParser.json()) app.get('/', (_req, res) => { res.status.send(200).send("Amigo Receipt Sender Service Homepage!") }) amqp.connect(process.env.AMQP_SERVER).then(async conn=> { const ch = await conn.createChannel() const queuePaylaterExist = ch.assertQueue(queuePaylater, { durable : true }); const queueNotaExist = ch.assertQueue(queueNota, { durable: true }) if (queueNotaExist) { queueNotaExist.then(() => { return ch.consume(queueNota, async (msg) => { var messageBody = JSON.parse(msg.content.toString()) console.log(`[*] Message Received! email : ${messageBody.email} and pesan : ${messageBody.html}`) sendReceipt(messageBody.email, messageBody.html) }, { noAck: true }) }).then(() => { console.log('* Waiting for messages from queue ' + queueNota) }) } }).catch(console.warn) function sendReceipt(recepientEmail, receipt) { var date = new Date() sendSmtpEmail = { sender: {email: senderEmail, name: process.env.SENDER_NAME}, to: [{email: recepientEmail, name: 'Customer'}], subject: "test", textContent: "testing", htmlContent: receipt } apiInstance.sendTransacEmail(sendSmtpEmail).then(function(data) { console.log('API called successfully. Returned data: ' + data) console.log(date.toLocaleString()) }, function(error) { console.error(error) }) }