-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathserver.js
114 lines (98 loc) · 2.82 KB
/
server.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
/**
* Module dependencies.
*/
var express = require('express');
var util = require('util');
var nowjs = require('now');
var app = module.exports = express.createServer();
var everyone = nowjs.initialize(app);
var Paste = require('./models/paste').Paste;
// Configuration
app.configure(function(){
app.set('views', __dirname + '/views');
app.set('view engine', 'jade');
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(app.router);
app.use(express.static(__dirname + '/public'));
});
app.configure('development', function(){
app.use(express.errorHandler({ dumpExceptions: true, showStack: true }));
});
app.configure('production', function(){
app.use(express.errorHandler());
});
// ROUTES
/// Index pastes
app.get('/pastes', function (req, res) {
Paste.findLastFive.run(function (err, pastes) {
if(err) throw err.message;
res.render('pastes/index', {title: 'Pastes', pastes: pastes});
});
})
/// Show paste
app.get('/pastes/:code', function (req, res) {
Paste.findOne({ code: req.params.code}, function (err, paste) {
if(paste) {
res.render('pastes/show', {paste: paste, title: "Show paste"});
}
else {
res.render('404', {title: "404"});
}
});
})
/// New paste
app.get('/', function(req, res){
var paste = new Paste();
res.render('index', {title: "New Paste", paste: paste});
});
/// Edit paste
app.get('/pastes/:code/edit', function (req, res) {
Paste.findOne({ code: req.params.code }, function (err, paste) {
if(paste) {
res.render('pastes/edit', {paste: paste, title: "Edit paste"});
}
else {
res.render('404', {title: "404"});
}
});
})
/// Create paste
app.post('/pastes', function(req, res){
var paste = new Paste({ body: req.body.body, preview: req.body.body, private: setPrivate(req.body.private) });
paste.save(function (err) {
if(err) {
// throw err
console.log(err.message);
res.redirect('/');
}
else {
console.log('saved');
res.redirect('/pastes/'+ paste.code);
path = paste.private ? '/pastes/private/'+ paste._id : '/pastes/'+ paste.code;
everyone.now.prependPaste(paste);
res.redirect(path);
}
})
});
// FIXME: Use mongoose update
/// Upadate paste
app.put('/pastes/:code', function (req,res) {
Paste.findOne({ code: req.params.code}, function (err, paste) {
if(paste) {
paste.body = req.body.body;
paste.save(function (err) {
if(err) res.render('pastes/'+ paste.code +'/edit', {paste: paste, title: "Edit paste"});
else res.redirect('pastes/'+ paste.code);
})
}
else {
res.render('404', {title: "404"});
}
});
})
// Only listen on $ node app.js
if (!module.parent) {
app.listen(4000); // nodester port => 9509
console.log("Express server listening on port %d", app.address().port);
}