-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.js
More file actions
84 lines (75 loc) · 2.9 KB
/
index.js
File metadata and controls
84 lines (75 loc) · 2.9 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
const aws = require('aws-sdk');
const dynamodb = new aws.DynamoDB();
const ses = new aws.SES();
const env = process.env;
exports.handler = function(event, context) {
const tableName = env.table_name;
const sender = env.sender;
const snsNotification = event.Records[0].Sns;
const snsMessage = JSON.parse(snsNotification.Message);
console.log("SNS Message");
console.log(snsMessage);
var getParams = {
TableName: tableName,
FilterExpression: '(subject = :subject) AND (question_id = :question_id) AND (answer_id = :answer_id) AND (answer_text = :answer_text)',
ExpressionAttributeValues: {
':subject': {S: snsNotification.Subject},
':question_id': {S: snsMessage.question_id},
':answer_id': {S: snsMessage.answer_id},
':answer_text': {S: snsMessage.answer_text}
}
};
const getItem = dynamodb.scan(getParams).promise();
getItem.then(data => {
if(data.Count == 0){
console.log("Sending Email Notification");
const sendEmail = ses.sendEmail({
Destination: {
ToAddresses: [snsMessage.question_user_email]
},
Message: {
Body: {
Html: {
Data: snsMessage.email_body
}
},
Subject: {
Data: snsMessage.email_subject
}
},
Source: sender
}).promise();
sendEmail.then(data => {
console.info("Send Mail Success");
console.info(`Mail sent to ${snsMessage.question_user_email}`);
console.info("Storing DynamoDB Item");
dynamodb.putItem({
TableName: tableName,
Item: {
id: {S: snsNotification.MessageId},
subject: {S: snsNotification.Subject},
question_id: {S: snsMessage.question_id},
answer_id: {S: snsMessage.answer_id},
answer_text: {S: snsMessage.answer_text},
to_email: {S: snsMessage.question_user_email},
}
}, function(err, data){
if(err){
console.error("Put Item Fail");
console.error(err);
} else {
console.info("Put Item Success");
}
});
}).catch(err => {
console.error("Send Mail Fail");
console.error(err);
});
}else{
console.info("Item Already Exists");
}
}).catch(err => {
console.error(err);
context.done(err, "Get Item Fail");
});
}