59 lines
1.4 KiB
JavaScript
59 lines
1.4 KiB
JavaScript
|
|
const AWS = require('aws-sdk');
|
|
|
|
AWS.config.update({region: 'us-east-1'});
|
|
|
|
const knex = require('knex')({
|
|
client: 'mysql',
|
|
connection: {
|
|
host: 'nzoth-whispers.cnr1c5jzuhe8.us-east-1.rds.amazonaws.com',
|
|
user: 'lambda_user',
|
|
password: 'AppleADay',
|
|
database: 'nzoth'
|
|
}
|
|
});
|
|
|
|
const whispers = require('./whispers.json');
|
|
|
|
const snsService = new AWS.SNS({apiVersion: '2010-03-31'});
|
|
|
|
const getRandomWhisper = () => {
|
|
const randomIndex = Math.floor(Math.random() * (whispers.length - 1));
|
|
return whispers[randomIndex];
|
|
};
|
|
|
|
const sendWhisper = PhoneNumber => {
|
|
|
|
// TODO : Include opt-out logic
|
|
|
|
const Message = getRandomWhisper();
|
|
|
|
console.log(`Sending "${Message}" to "${PhoneNumber}"`);
|
|
|
|
return snsService.publish({
|
|
Message: Message,
|
|
PhoneNumber: PhoneNumber
|
|
}).promise()
|
|
.catch(err => console.error(`Error sending sms: ${err}`));
|
|
};
|
|
|
|
exports.handler = async (event) => {
|
|
|
|
const phoneNumbers = await knex
|
|
.select().from('phone_numbers').where('is_deleted', 0)
|
|
.catch(err => console.error(`Error getting phone_numbers: ${err}`));
|
|
|
|
if (!phoneNumbers) {
|
|
return;
|
|
}
|
|
|
|
const inFlightMessages = phoneNumbers
|
|
.map(r => r.phone_number)
|
|
.map( sendWhisper );
|
|
|
|
await Promise.all(inFlightMessages).catch(err => console.error(err));
|
|
|
|
console.log('Wrapping up');
|
|
return;
|
|
};
|