Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 18 additions & 9 deletions app.js
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down
16 changes: 11 additions & 5 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -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"
}
}
}
30 changes: 17 additions & 13 deletions routes/index.js
Original file line number Diff line number Diff line change
@@ -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;
Expand All @@ -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;
Expand All @@ -34,7 +34,7 @@ exports.oauth = function(req, res) {
}
});
};

// OAuth callback
exports.oauth_callback = function(req, res) {
var client = new Evernote.Client({
Expand All @@ -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');
Expand All @@ -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{
Expand All @@ -94,20 +96,22 @@ 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;
req.session.edamNoteStoreUrl = results.edam_noteStoreUrl;
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();
Expand Down
42 changes: 29 additions & 13 deletions routes/notes.js
Original file line number Diff line number Diff line change
@@ -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;
Expand All @@ -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);

Expand All @@ -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));
});
};

Expand Down Expand Up @@ -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));
});
};

Expand All @@ -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));
});
};

Expand All @@ -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));
});
};

Expand All @@ -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));
});
};

Expand All @@ -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));
});
};