Skip to content

Instantly share code, notes, and snippets.

@micahwalter
Last active August 29, 2015 14:01
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save micahwalter/766822248c103a7b5c5f to your computer and use it in GitHub Desktop.
Save micahwalter/766822248c103a7b5c5f to your computer and use it in GitHub Desktop.
archive_sms.js
var mongoose = require('mongoose'),
Schema = mongoose.Schema;
// simple schema for Mongo
var MessageSchema = new Schema({
archived: {
type: Date,
default: Date.now
},
message_id: {
type: String,
unique: true
},
message: {
type: Object
},
});
var Message = mongoose.model('Message', MessageSchema);
if (process.env.MONGOHQ_URL) {
MONGO_URL = process.env.MONGOHQ_URL;
} else {
MONGO_URL = 'mongodb://localhost/objectphone'
}
mongoose.connect(MONGO_URL);
// Twilio Credentials
var accountSid = process.env.TWILIO_SID;
var authToken = process.env.TWILIO_TOKEN;
//require the Twilio module and create a REST client
var client = require('twilio')(accountSid, authToken);
client.messages.list({}, function(err, data) {
var num_pages = data.num_pages-1;
var jobs = 0;
for(var i=0;i<=num_pages;i++){
client.messages.list({page:i}, function(err, data){
data.messages.forEach(function(message) {
// storing each message as an object in Mongo
// you could also write them as json files, index them with elasticsearch, or something more clever?
var query = {message_id:message.sid}
var updateMessage = {};
updateMessage.message_id = message.sid;
updateMessage.message = message;
// upserting
Message.findOneAndUpdate(query, updateMessage, {upsert:true}, function(err, doc) {
if (err) return console.error(err);
jobs++;
console.log("Updating: "+ doc.message_id);
if ( jobs = num_pages ){
// this is only necessary to stop the script when we are done...
mongoose.connection.close();
}
});
});
});
}
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment