Skip to content

Commit b022fa7

Browse files
Justin TerryJustin Terry
Justin Terry
authored and
Justin Terry
committed
Added emailing
1 parent 74481cd commit b022fa7

File tree

5 files changed

+228
-38
lines changed

5 files changed

+228
-38
lines changed

lib/api/controllers/alertsController.js

+2
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ var DynamoDB = require("../../database/DynamoDB");
33
var CognitoErrors = require('../../auth/CognitoErrors')
44
var DynamoDBErrors = require('../../database/DynamoDBErrors')
55
var Texter = require('../../communications/texter');
6+
var Emailer = require('../../communications/emailer');
67

78
var response = {
89
error: null,
@@ -20,6 +21,7 @@ exports.createAlert = function(req, res) {
2021
}
2122
res.status(200).send(response);
2223
Texter.sendMessage(req.body);
24+
Emailer.sendEmail(req.body);
2325
}).catch(err => {
2426
// Error was generated, update response and send.
2527
response.error = true;

lib/communications/emailer.js

+74
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
// Load the AWS SDK for Node.js
2+
var AWS = require('aws-sdk');
3+
var DynamoDB = require('../database/DynamoDB');
4+
// Set the region
5+
AWS.config.update({region: 'us-east-1'});
6+
var baseURL = 'https://master.d34e7o1nxh5a7i.amplifyapp.com/?query=';
7+
8+
// Create sendEmail params
9+
var params = {
10+
Destination: { /* required */
11+
ToAddresses: []
12+
},
13+
Message: { /* required */
14+
Body: { /* required */
15+
Html: {
16+
Charset: "UTF-8",
17+
Data: ""
18+
},
19+
Text: {
20+
Charset: "UTF-8",
21+
Data: "TEXT_FORMAT_BODY"
22+
}
23+
},
24+
Subject: {
25+
Charset: 'UTF-8',
26+
Data: 'SafeHopper ALERT!'
27+
}
28+
},
29+
Source: '[email protected]', /* required */
30+
ReplyToAddresses: [
31+
32+
/* more items */
33+
],
34+
};
35+
36+
exports.sendEmail = function(req) {
37+
getContacts(req);
38+
}
39+
40+
function sendMessage(contacts, alertId, name) {
41+
if(contacts != null){
42+
var text = "SafeHopper Alert!\n" + name +
43+
" is requesting your help.\n\n Follow this link to see their current loction:\n" +
44+
baseURL + alertId;
45+
params.Message.Body.Html.Data = text;
46+
for(var i = 0; i < contacts.length; i++){
47+
params.Destination.ToAddresses[i] = contacts[i].email;
48+
}
49+
50+
// Create the promise and SES service object
51+
var sendPromise = new AWS.SES({apiVersion: '2010-12-01'}).sendEmail(params).promise();
52+
53+
// Handle promise's fulfilled/rejected states
54+
sendPromise.then(
55+
function(data) {
56+
console.log(data.MessageId);
57+
}).catch(
58+
function(err) {
59+
console.error(err, err.stack);
60+
});
61+
}
62+
}
63+
64+
function getContacts(req) {
65+
var body = {
66+
userEmail: req.email,
67+
}
68+
DynamoDB.getContacts(body).then(result => {
69+
sendMessage(result, req.alertId, req.name);
70+
}).catch(err => {
71+
// Error was generated
72+
console.log("ERROR: can't get contacts");
73+
})
74+
}

lib/communications/texter.js

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
var twilio = require('twilio');
22
var DynamoDB = require('../database/DynamoDB');
33

4-
var accountSid = process.env.ACCOUNT_SID; // Your Account SID from www.twilio.com/console
5-
var authToken = process.env.AUTH_TOKEN; // Your Auth Token from www.twilio.com/console
4+
var accountSid = process.env.ACCOUNT_SID;
5+
var authToken = process.env.AUTH_TOKEN;
66
var baseURL = 'https://master.d34e7o1nxh5a7i.amplifyapp.com/?query=';
77

88
var twilio = require('twilio');
@@ -34,7 +34,7 @@ function getContacts(req) {
3434
DynamoDB.getContacts(body).then(result => {
3535
sendText(result, req.alertId, req.name);
3636
}).catch(err => {
37-
// Error was generated, update response and send.
37+
// Error was generated
3838
console.log("ERROR: can't get contacts");
3939
})
4040
}

0 commit comments

Comments
 (0)