diff --git a/app.js b/app.js index a59c2f1..e97ef68 100644 --- a/app.js +++ b/app.js @@ -10,26 +10,35 @@ var http = require('http'); var path = require('path'); var compass = require('node-compass'); +var favicon = require('serve-favicon'); +var logger = require('morgan'); +var methodOverride = require('method-override'); +var session = require('express-session'); +var bodyParser = require('body-parser'); +var errorHandler = require('errorhandler') + var app = express(); app.engine('html', require('hogan-express')); // all environments app.set('port', process.env.PORT || 3000); app.set('views', path.join(__dirname, 'views')); app.set('view engine', 'html'); -app.use(express.favicon()); -app.use(express.logger('dev')); -app.use(express.json()); -app.use(express.urlencoded()); -app.use(express.methodOverride()); -app.use(express.cookieParser('enmlEditorSecret')); -app.use(express.session()); -app.use(app.router); +//app.use(favicon(path.join(__dirname, '/public/favicon.ico'))); +app.use(logger('dev')); +app.use(bodyParser.json()); +app.use(bodyParser.urlencoded({extended: true})); +app.use(methodOverride()); +app.use(session({ + resave: true, + saveUninitialized: true, + secret: 'enmlEditorSecret' +})); app.use(express.static(path.join(__dirname, 'public'))); app.use(compass({mode: 'compact', comments: true})); // development only if ('development' == app.get('env')) { - app.use(express.errorHandler()); + app.use(errorHandler()); } app.get('/', routes.index); diff --git a/package.json b/package.json index 53ac366..503f51f 100644 --- a/package.json +++ b/package.json @@ -6,9 +6,15 @@ "start": "node app.js" }, "dependencies": { - "express": "3.4.4", - "evernote": "*", - "hogan-express": "*", - "node-compass": "*" + "body-parser": "^1.19.0", + "errorhandler": "^1.5.1", + "evernote": "^2.0.5", + "express": "^4.17.1", + "express-session": "^1.17.0", + "hogan-express": "^0.5.2", + "method-override": "^3.0.0", + "morgan": "^1.9.1", + "node-compass": "^0.2.4", + "serve-favicon": "^2.5.0" } -} \ No newline at end of file +} diff --git a/routes/index.js b/routes/index.js index 488da06..4024c56 100644 --- a/routes/index.js +++ b/routes/index.js @@ -1,4 +1,4 @@ -var Evernote = require('evernote').Evernote; +var Evernote = require('evernote'); var config = require('../config.json'); var isProduction = (process.env.NODE_ENV === 'production'); var port = process.env.PORT || 3000; @@ -24,7 +24,7 @@ exports.oauth = function(req, res) { req.session.error = JSON.stringify(error); res.redirect('/'); } - else { + else { // store the tokens in the session req.session.oauthToken = oauthToken; req.session.oauthTokenSecret = oauthTokenSecret; @@ -34,7 +34,7 @@ exports.oauth = function(req, res) { } }); }; - + // OAuth callback exports.oauth_callback = function(req, res) { var client = new Evernote.Client({ @@ -44,9 +44,9 @@ exports.oauth_callback = function(req, res) { }); client.getAccessToken( - req.session.oauthToken, - req.session.oauthTokenSecret, - req.param('oauth_verifier'), + req.session.oauthToken, + req.session.oauthTokenSecret, + req.param('oauth_verifier'), function(error, oauthAccessToken, oauthAccessTokenSecret, results) { if(error) { console.log('error'); @@ -61,30 +61,32 @@ exports.oauth_callback = function(req, res) { }); var noteStore = client.getNoteStore(); var slideNotebook = ''; - noteStore.listNotebooks(function(err, notebooks){ + noteStore.listNotebooks().then(function(notebooks){ for(var i in notebooks){ - console.log(notebooks[i].name); + console.log("Notebook: "+notebooks[i].name); if(notebooks[i].name == config.NOTEBOOK_NAME){ slideNotebook = notebooks[i]; } } if(!slideNotebook){ console.log('create notebook'); - slideNotebook = new Evernote.Notebook(); + slideNotebook = new Evernote.Types.Notebook(); slideNotebook.name = config.NOTEBOOK_NAME; - noteStore.createNotebook(slideNotebook, function(err, createdNotebook) { + noteStore.createNotebook(slideNotebook).then(function(createdNotebook) { console.log(createdNotebook); req.session.slideNotebook = createdNotebook; // store the access token in the session req.session.oauthAccessToken = oauthAccessToken; - req.session.oauthAccessTtokenSecret = oauthAccessTokenSecret; + req.session.oauthAccessTokenSecret = oauthAccessTokenSecret; req.session.edamShard = results.edam_shard; req.session.edamUserId = results.edam_userId; req.session.edamExpires = results.edam_expires; req.session.edamNoteStoreUrl = results.edam_noteStoreUrl; req.session.edamWebApiUrlPrefix = results.edam_webApiUrlPrefix; res.redirect('/notes'); + }).catch(function(err) { + console.log("Error creating notebook: "+JSON.stringify(err)); }); } else{ @@ -94,7 +96,7 @@ exports.oauth_callback = function(req, res) { // store the access token in the session req.session.oauthAccessToken = oauthAccessToken; - req.session.oauthAccessTtokenSecret = oauthAccessTokenSecret; + req.session.oauthAccessTokenSecret = oauthAccessTokenSecret; req.session.edamShard = results.edam_shard; req.session.edamUserId = results.edam_userId; req.session.edamExpires = results.edam_expires; @@ -102,12 +104,14 @@ exports.oauth_callback = function(req, res) { req.session.edamWebApiUrlPrefix = results.edam_webApiUrlPrefix; res.redirect('/notes'); } + }).catch(function(err) { + console.log("Error listing notebooks: "+JSON.stringify(err)); }); } } ); }; - + // Clear session exports.logout = function(req, res) { req.session.destroy(); diff --git a/routes/notes.js b/routes/notes.js index 2df7c2e..a95ec3d 100644 --- a/routes/notes.js +++ b/routes/notes.js @@ -1,4 +1,4 @@ -var Evernote = require('evernote').Evernote; +var Evernote = require('evernote'); var config = require('../config.json'); var isProduction = (process.env.NODE_ENV === 'production'); var port = process.env.PORT || 3000; @@ -12,14 +12,14 @@ exports.listNotes = function(req, res) { var noteStore = client.getNoteStore(); var notes = []; - var filter = new Evernote.NoteFilter(); + var filter = new Evernote.NoteStore.NoteFilter(); filter.notebookGuid = req.session.slideNotebook.guid; filter.order = 2; //sort by UPDATED time var offset = 0; - var spec = new Evernote.NotesMetadataResultSpec(); + var spec = new Evernote.NoteStore.NotesMetadataResultSpec(); spec.includeTitle = true; - - noteStore.findNotesMetadata(filter, offset, 20, spec, function(err, response){ + + noteStore.findNotesMetadata(filter, offset, 20, spec).then(function(response){ var notesList = response.notes; console.log(notesList); @@ -34,6 +34,8 @@ exports.listNotes = function(req, res) { title: 'ENML Editor: Note List', notes: notes }); + }).catch(function(err){ + console.log("Error in findNotesMetadata: "+JSON.stringify(err)); }); }; @@ -63,13 +65,15 @@ exports.createNote = function(req, res) { }); var noteStore = client.getNoteStore(); - var note = new Evernote.Note(); + var note = new Evernote.Types.Note(); note.title = data.title; note.content = data.content; note.notebookGuid = req.session.slideNotebook.guid; - noteStore.createNote(note, function(err, note){ + noteStore.createNote(note).then(function(note){ res.redirect('/notes'); + }).catch(function(err) { + console.log("Error in createNote: "+ JSON.stringify(err)); }); }; @@ -82,12 +86,14 @@ exports.showNote = function(req, res) { var noteStore = client.getNoteStore(); var guid = req.params.id; - noteStore.getNote(guid, true, false, false, false, function(err, note){ + noteStore.getNote(guid, true, false, false, false).then( function(note){ res.render('show', { layout: 'layouts/layout', title: note.title, note: note }); + }).catch(function(err) { + console.log("Error in showNote: "+ JSON.stringify(err)); }); }; @@ -100,12 +106,14 @@ exports.editNote = function(req, res) { var noteStore = client.getNoteStore(); var guid = req.params.id; - noteStore.getNote(guid, true, false, false, false, function(err, note){ + noteStore.getNote(guid, true, false, false, false).then(function(note){ res.render('edit', { layout: 'layouts/layout', title: note.title, note: note }); + }).catch(function(err) { + console.log("Error in editNote: "+ JSON.stringify(err)); }); }; @@ -122,12 +130,16 @@ exports.updateNote = function(req, res) { var noteStore = client.getNoteStore(); var guid = req.params.id; - noteStore.getNote(guid, true, false, false, false, function(err, note){ + noteStore.getNote(guid, true, false, false, false).then(function(note){ note.title = data.title; note.content = data.content - noteStore.updateNote(note, function(err, note){ + noteStore.updateNote(note).then(function(note){ res.redirect('/notes'); + }).catch(function(err) { + console.log("Error in updateNote redirect: "+ JSON.stringify(err)); }); + }).catch(function(err) { + console.log("Error in updateNote: "+ JSON.stringify(err)); }); }; @@ -141,10 +153,14 @@ exports.deleteNote = function(req, res) { var noteStore = client.getNoteStore(); var guid = req.params.id; - noteStore.getNote(guid, true, false, false, false, function(err, note){ + noteStore.getNote(guid, true, false, false, false).then(function(note){ note.active = false; - noteStore.updateNote(note, function(err, note){ + noteStore.updateNote(note).then(function(note){ res.redirect('/notes'); + }).catch(function(err) { + console.log("Error in updateNote redirect 2: "+ JSON.stringify(err)); }); + }).catch(function(err) { + console.log("Error in deleteNote: "+ JSON.stringify(err)); }); }; \ No newline at end of file