Files
enstrayedapi/routes/azure.js
2023-11-15 11:44:47 -08:00

54 lines
1.9 KiB
JavaScript

const { app, db, globalConfig } = require("../index.js") // Get globals from index
const { EmailClient } = require("@azure/communication-email");
const azureEmail = new EmailClient(globalConfig.azure.connectionString)
app.post("/sendemail", (rreq,rres) => {
db.get(globalConfig.azure.authKeyInDb).then(dbres => {
if (dbres == null) {
console.log("ERROR: Configured key containing azure authkeys is null")
rres.sendStatus(500)
} else {
let validKeys = dbres.split(',')
if (validKeys.includes(rreq.get("Authorization"))) {
let message = {
senderAddress: globalConfig.azure.senderAddress,
content: {
subject: rreq.body.message.subject,
plainText: rreq.body.message.content,
},
recipients: {
to: [
{
address: rreq.body.recipient.emailAddr,
displayName: rreq.body.recipient.emailName,
},
],
},
}
azureEmail.beginSend(message).then(ares => {
db.incr(`${globalConfig.azure.usageKeyPrefix}${rreq.get("Authorization")}`)
console.log(`${rreq.get("cf-connecting-ip")} POST /sendemail returned 200 KEY:${rreq.get("Authorization")}`)
rres.sendStatus(200)
}).catch(err => {
rres.sendStatus(500)
console.log(err)
})
} else {
console.log(`${rreq.get("cf-connecting-ip")} POST /sendemail returned 401`)
rres.sendStatus(401)
}
}
})
})
module.exports = {app} // export routes to be imported by index for execution