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 }