groundwork to redo notifications
This commit is contained in:
@@ -0,0 +1,72 @@
|
||||
import { title } from "node:process"
|
||||
import { globalConfig } from "../index.js"
|
||||
import * as nodemailer from 'nodemailer'
|
||||
|
||||
const transporter = nodemailer.createTransport({
|
||||
host: globalConfig.email.host,
|
||||
port: 465,
|
||||
secure: true,
|
||||
auth: {
|
||||
user: globalConfig.email.username,
|
||||
pass: globalConfig.email.password
|
||||
}
|
||||
})
|
||||
|
||||
/**
|
||||
* Global send email function, takes recipient, subject line and content line
|
||||
* @param {string} recipient recipients email address
|
||||
* @param {string} subject email subject line
|
||||
* @param {string} content email content
|
||||
* @returns {object} {success: bool, message: string}
|
||||
*/
|
||||
function sendEmail(recipient, subject, content) {
|
||||
return transporter.sendMail({
|
||||
from: "Enstrayed API <api@enstrayed.com>",
|
||||
to: rreq.body.recipient,
|
||||
subject: rreq.body.subject ?? "Subject Not Set",
|
||||
text: rreq.body.message ?? "Message Not Set"
|
||||
}).then(transportResponse => {
|
||||
if (transportResponse.response.slice(0, 1) === "2") {
|
||||
return { success: true, message: transportResponse.response }
|
||||
} else {
|
||||
return { success: false, message: transportResponse.response }
|
||||
}
|
||||
}).catch(transportError => {
|
||||
return { success: false, message: transportError }
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* Send a discord webhoook to supplied URL with an embed
|
||||
* @param {string} webhook Webhook URL
|
||||
* @param {string} subject Message subject line
|
||||
* @param {string} content Message content
|
||||
* @param {string} sender Sender shown on footer of embed
|
||||
* @param {string} color hex color of embed accent
|
||||
* @returns {object} {success: bool, message: string}
|
||||
*/
|
||||
function sendWebhookDiscord(webhook, subject, content, sender, color) {
|
||||
let embed = {
|
||||
title: subject,
|
||||
description: content,
|
||||
color: parseInt(color, 16) ?? 16777215,
|
||||
footer: {
|
||||
text: `Enstrayed API - Sent by ${sender ?? "SENDER"}`
|
||||
}
|
||||
}
|
||||
return fetch(webhook, {
|
||||
method: "POST",
|
||||
headers: {
|
||||
'Content-Type': 'application/json'
|
||||
},
|
||||
body: JSON.stringify({ embeds: [embed] })
|
||||
}).then(response => {
|
||||
if (response.status === 204) {
|
||||
return { success: true, message: response.status}
|
||||
} else {
|
||||
return { success: false, message: response.status}
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
export { sendEmail, sendWebhookDiscord }
|
||||
Reference in New Issue
Block a user