|
var express = require('express'); |
|
var app = express(); |
|
const admin = require('firebase-admin'); |
|
let serviceAccount = require('./serviceAccountKey.json'); |
|
admin.initializeApp({ |
|
credential: admin.credential.cert(serviceAccount) |
|
}); |
|
|
|
app.use( |
|
express.json({ |
|
type: [ |
|
'application/json', |
|
'text/plain', // AWS sends this content-type for its messages/notifications |
|
], |
|
}) |
|
) |
|
|
|
app.use(function(req, res, next) { |
|
res.header("Access-Control-Allow-Origin", "*"); |
|
res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE,OPTIONS'); |
|
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept"); |
|
next(); |
|
}); |
|
|
|
app.set('port', process.env.PORT || 4000); |
|
|
|
|
|
var server = app.listen(app.get('port'), function() { |
|
console.log('Express server listening on port ' + server.address().port); |
|
}); |
|
|
|
|
|
|
|
let db = admin.firestore(); |
|
var collection = 'aws-ses-events'; |
|
|
|
|
|
app.post('/sns', function(req, res) { |
|
console.log(JSON.parse(req.body.Message)); |
|
var message = JSON.parse(req.body.Message); |
|
let doc = { |
|
"messageId": message.mail.messageId, |
|
"eventType": message.eventType, |
|
"timestamp": message.mail.timestamp, |
|
"from": message.mail.commonHeaders.from, |
|
"to": message.mail.commonHeaders.to, |
|
"subject": message.mail.commonHeaders.subject, |
|
"eventInfo": message[message.eventType.toLowerCase()] |
|
}; |
|
|
|
db.collection(collection).add(doc).then(ref => { |
|
console.log('Added document with ID: ', ref.id); |
|
res.send(ref.id); |
|
}); |
|
}); |