UNPKG

@srsl/tools

Version:

JavaScript tools for common interfaces

127 lines (104 loc) 3.16 kB
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)') } }) }