@@ -6,11 +6,14 @@ var express = require('express') |
||
6 | 6 |
var app = express() |
7 | 7 |
var path = require('path'); |
8 | 8 |
var fs = require('fs'); |
9 |
+var bodyParser = require('body-parser'); |
|
10 |
+var _ = require('lodash'); |
|
9 | 11 |
|
10 | 12 |
app.engine('html', require('ejs').renderFile); |
11 | 13 |
app.set('view engine', 'html'); |
12 | 14 |
//app.use('/public', express.static(path.join(__dirname + '/node_modules'))); |
13 | 15 |
app.use(express.static('public')) |
16 |
+app.use(bodyParser.json()); |
|
14 | 17 |
|
15 | 18 |
var getPath = function(req){ |
16 | 19 |
var path = ""; |
@@ -71,13 +74,52 @@ var get_file = function(req, res){ |
||
71 | 74 |
fs.readFile(path, 'utf8', function (err,data) { |
72 | 75 |
if (err) { |
73 | 76 |
return console.log(err); |
77 |
+ } else { |
|
78 |
+ console.log("Rendered: " + path) |
|
79 |
+ res.render('index', { body: markdown_parser(data) }); |
|
74 | 80 |
} |
75 |
- res.render('index', { body: markdown_parser(data) }); |
|
76 | 81 |
}); |
77 | 82 |
} else { |
78 |
- res.sendFile( process.cwd() + "/" + path) |
|
83 |
+ res.sendFile( process.cwd() + "/" + path, function (err) { |
|
84 |
+ if (err) { |
|
85 |
+ console.log("Error: " + path + " - file not found"); |
|
86 |
+ res.status(err.status).end(); |
|
87 |
+ } |
|
88 |
+ else { |
|
89 |
+ console.log('Sent:', path); |
|
90 |
+ } |
|
91 |
+ }); |
|
79 | 92 |
} |
93 |
+} |
|
80 | 94 |
|
95 |
+var write_file = function(req, res){ |
|
96 |
+ var path = getPath(req); |
|
97 |
+ var save_data; |
|
98 |
+ // Write file |
|
99 |
+ if(req.params['file'] != undefined){ |
|
100 |
+ path = path + req.params['file']; |
|
101 |
+ if(path == ""){ |
|
102 |
+ console.log("Error: path not specified") |
|
103 |
+ res.status(400).end(); |
|
104 |
+ return; |
|
105 |
+ } |
|
106 |
+ if (req.body.file != undefined) { |
|
107 |
+ save_data = req.body.file |
|
108 |
+ } |
|
109 |
+ else if(req.body.data != undefined){ |
|
110 |
+ save_data = JSON.stringify(req.body.data) |
|
111 |
+ } |
|
112 |
+ fs.writeFile(path, save_data, function(err) { |
|
113 |
+ if(err) { |
|
114 |
+ console.log("Error: " + path + " - file could not be saved") |
|
115 |
+ console.log(err); |
|
116 |
+ res.status(err.status).end(); |
|
117 |
+ } else { |
|
118 |
+ console.log("Saved: " + path); |
|
119 |
+ res.status(200).end(); |
|
120 |
+ } |
|
121 |
+ }); |
|
122 |
+ } |
|
81 | 123 |
} |
82 | 124 |
|
83 | 125 |
var markdown_parser = function(data){ |
@@ -114,6 +156,12 @@ for (var i = 0; i < url_paths.length; i++) { |
||
114 | 156 |
}) |
115 | 157 |
} |
116 | 158 |
|
159 |
+for (var i = 0; i < url_paths.length; i++) { |
|
160 |
+ app.post(url_paths[i], function (req, res) { |
|
161 |
+ write_file(req, res); |
|
162 |
+ }) |
|
163 |
+} |
|
164 |
+ |
|
117 | 165 |
|
118 | 166 |
app.listen(3000, function () { |
119 | 167 |
console.log('Codex Server – listening on port 3000') |
@@ -17,8 +17,10 @@ |
||
17 | 17 |
}, |
18 | 18 |
"dependencies": { |
19 | 19 |
"ascii2mathml": "^0.5.4", |
20 |
+ "body-parser": "^1.17.2", |
|
20 | 21 |
"ejs": "^2.5.6", |
21 | 22 |
"express": "^4.15.2", |
23 |
+ "lodash": "^4.17.4", |
|
22 | 24 |
"markdown": "^0.5.0", |
23 | 25 |
"markdown-it": "^8.3.1", |
24 | 26 |
"markdown-it-highlightjs": "^3.0.0", |