@srsl/tools
Version:
JavaScript tools for common interfaces
127 lines (104 loc) • 3.16 kB
JavaScript
require('module-alias/register')
const { argv } = require('yargs')
const { ses } = require('^/constructors/aws-sdk')
const {
readHTMLEmailTemplate,
readTextEmailTemplate,
} = require('^/utils/email')
const createTemplateParams = async function createTemplateParams(templateName, subjectLine) {
const htmlTemplate = await readHTMLEmailTemplate(templateName)
const textTemplate = await readTextEmailTemplate(templateName)
return {
Template: {
TemplateName: templateName,
HtmlPart: htmlTemplate,
SubjectPart: subjectLine,
TextPart: textTemplate,
},
}
}
module.exports.createTemplateParams = createTemplateParams
const createEmailTemplate = async function createEmailTemplate(templateName, subjectLine) {
const params = await createTemplateParams(templateName, subjectLine)
const templatePromise = ses.createTemplate(params).promise()
templatePromise.then((data, err) => {
if (err) {
console.error(err, err.stack)
} else {
console.log(data)
}
})
}
module.exports.createEmailTemplate = createEmailTemplate
const updateEmailTemplate = async function updateEmailTemplate(templateName, subjectLine) {
const params = await createTemplateParams(templateName, subjectLine)
const templatePromise = ses.updateTemplate(params).promise()
templatePromise.then((data, err) => {
if (err) {
console.error(err, err.stack)
} else {
console.log(data)
}
})
}
module.exports.updateEmailTemplate = updateEmailTemplate
const deleteEmailTemplate = async function deleteEmailTemplate(templateName) {
const templatePromise = ses.deleteTemplate({ TemplateName: templateName }).promise()
templatePromise.then((data, err) => {
if (err) {
console.error(err, err.stack)
} else {
console.log(data)
}
})
}
module.exports.deleteEmailTemplate = deleteEmailTemplate
const templates = [
{
templateName: 'welcome',
subjectLine: 'Welcome to TrustedLife!',
},
{
templateName: 'validateEmail',
subjectLine: 'Confirm this Email',
},
]
if (require.main === module) {
const { action } = argv
if (!action) {
console.error('Argument "action" is required.')
process.exit(3)
}
templates.forEach(({ templateName, subjectLine }) => {
if (!templateName) {
console.error('Definition "templateName" is required.')
process.exit(1)
}
if (!action === 'delete' && !subjectLine) {
console.error('Definition "subjectLine" is required.')
process.exit(2)
}
switch (action) {
case 'create':
createEmailTemplate(templateName, subjectLine)
break
case 'update':
updateEmailTemplate(templateName, subjectLine)
break
case 'delete':
deleteEmailTemplate(templateName)
break
case 'get':
ses.getTemplate({ TemplateName: templateName }).promise().then((data, err) => {
if (err) {
console.error(err)
} else {
console.log(data)
}
})
break
default:
console.log('Please provide an --action=(create|update|delete|get)')
}
})
}