-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathhandler.js
62 lines (55 loc) · 1.67 KB
/
handler.js
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
const aws = require('aws-sdk');
const ses = new aws.SES();
const srcEmail = process.env.SRC_EMAIL;
const destEmail = process.env.DEST_EMAIL;
const myDomain = process.env.DOMAIN;
const generateResponse = (code, payload) => ({
statusCode: code,
headers: {
'Access-Control-Allow-Origin': myDomain,
'Access-Control-Allow-Headers': 'x-requested-with',
'Access-Control-Allow-Credentials': true,
},
body: JSON.stringify(payload),
});
const generateError = (code, err) => ({
statusCode: code,
headers: {
'Access-Control-Allow-Origin': myDomain,
'Access-Control-Allow-Headers': 'x-requested-with',
'Access-Control-Allow-Credentials': true,
},
body: JSON.stringify(err.message),
});
const generateEmailParamsFromJSON = (body) => {
const { name, email, content } = JSON.parse(body);
if (!(name && email && content)) {
throw new Error('Missing parameters! Make sure to add parameters \'name\', \'email\', \'content\'.');
}
return {
Source: `OFReport.com <${srcEmail}>`,
Destination: { ToAddresses: [`Joshua Steele <${destEmail}>`] },
ReplyToAddresses: [email],
Message: {
Body: {
Text: {
Charset: 'UTF-8',
Data: `The following message was sent from ${email} by ${name}: \n\n${content}`,
},
},
Subject: {
Charset: 'UTF-8',
Data: `[OFReport.com] New message from ${name}`,
},
},
};
};
module.exports.sendJSON = async (event) => {
try {
const emailParams = generateEmailParamsFromJSON(event.body);
const data = await ses.sendEmail(emailParams).promise();
return generateResponse(200, data);
} catch (err) {
return generateError(500, err);
}
};