Skip to content

Instantly share code, notes, and snippets.

@hcgatewood
Last active December 23, 2019 08:37
Show Gist options
  • Save hcgatewood/1827bfb26a3d0738742aef9953afeb4c to your computer and use it in GitHub Desktop.
Save hcgatewood/1827bfb26a3d0738742aef9953afeb4c to your computer and use it in GitHub Desktop.
const isoFetch = require('isomorphic-fetch');
const Dropbox = require('dropbox').Dropbox;
const util = require('util');
exports.handler = function(context, event, callback) {
log(context);
log(event);
const whitelisted_numbers = [
context.HCG_NUM_1,
context.HCG_NUM_2,
];
if (!whitelisted_numbers.includes(event.From)) {
callback(`Received text from non-whitelisted ${event.From}`);
}
const twilioClient = context.getTwilioClient();
const dbx = new Dropbox({
accessToken: context.DROPBOX_ACCESS_TOKEN,
fetch: isoFetch,
});
const todoFilename = `todo_${dateFilename()}.txt`;
const todoFilepath = `/${todoFilename}`;
dbx.filesUpload({
path: todoFilepath,
contents: event.Body,
mute: true,
// mode: 'overwrite',
// Upload success
}).then(function(response) {
console.log('dropbox upload response...');
console.log(response);
dbx.sharingCreateSharedLink({
path: todoFilepath,
// Share success
}).then(function(response) {
console.log('dropbox link response...');
log(response);
twilioClient.messages.create({
from: event.To,
to: event.From,
body: `${response.url}`,
}, twilio_err(null, callback));
// Share fail
}).catch(function(err) {
console.log('dropbox link err...');
log(err);
twilioClient.messages.create({
from: event.To,
to: event.From,
body: `❌ Dropbox link fail.\n${fmtObject(err.error)}`,
}, twilio_err(err, callback));
})
// Upload fail
}).catch(function(err) {
console.log('dropbox upload err...');
log(err);
twilioClient.messages.create({
from: event.To,
to: event.From,
body: `❌ Dropbox upload fail.\n${fmtObject(err.error)}`,
}, twilio_err(err, callback));
});
};
function twilio_err(err, callback) {
return function(err_twilio, result) {
if (err_twilio === null) {
callback(err);
} else {
console.log('twilio err...');
log(err_twilio);
callback(err_twilio);
}
}
}
function fmtObject(obj) {
return util.inspect(obj, {showHidden: false, depth: null});
}
function log(obj) {
console.log(fmtObject(obj));
}
function dateFilename() {
var dt = new Date();
filename = `${
dt.getFullYear().toString().padStart(4, '0')}-${
(dt.getMonth()+1).toString().padStart(2, '0')}-${
dt.getDate().toString().padStart(2, '0')}_${
dt.getHours().toString().padStart(2, '0')}-${
dt.getMinutes().toString().padStart(2, '0')}-${
dt.getSeconds().toString().padStart(2, '0')}_${
dt.getTime().toString()
}`;
return filename;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment