|
- import express from 'express'
- import cors from 'cors'
- import bodyParser from 'body-parser'
- import amqp from 'amqplib'
- import dotenv from 'dotenv'
- import sgMail from '@sendgrid/mail'
-
- dotenv.config()
-
- const app = express()
- const queuePaylater = process.env.QUEUE_PAYLATER
- const queueNota = process.env.QUEUE_NOTA
- const senderEmail = process.env.SENDER_EMAIL
- const apiKey = process.env.SENDGRIP_API_KEY
- sgMail.setApiKey(apiKey)
-
- 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(`[*NOTA] Message Received! email : ${messageBody.email}`)
- sendReceipt({
- email: messageBody.email,
- subject: messageBody.subject,
- content: messageBody.content,
- })
- }, { noAck: true })
- }).then(() => {
- console.log('* Waiting for messages from queue ' + queueNota)
- })
- }
- if (queuePaylaterExist) {
- queuePaylaterExist.then(() => {
- return ch.consume(queuePaylater, async (msg) => {
- var messageBody = JSON.parse(msg.content.toString())
- console.log(`[*PayLater] Message Received! email : ${messageBody.email}`)
- sendReceipt({
- email: messageBody.email,
- subject: messageBody.subject,
- content: messageBody.content,
- })
- }, { noAck: true })
- }).then(() => {
- console.log('* Waiting for messages from queue ' + queuePaylater)
- })
- }
- }).catch(console.warn)
-
- function sendReceipt(message) {
- const now = new Date()
- const msg = {
- to: message.email,
- from: senderEmail,
- subject: message.subject,
- html: message.content,
- }
- sgMail
- .send(msg)
- .then((response) => {
- if (response[0].statusCode == 202) {
- console.log(`Email sent to ${message.email} at ${now}`)
- } else {
- console.error(`Failed to send email to ${message.email} at ${now}`)
- }
- })
- .catch((error) => {
- console.error(error)
- })
- }
|