Skip to content

Commit 7660223

Browse files
committed
refactor(app.js): Extract status pages
1 parent 66c6825 commit 7660223

2 files changed

Lines changed: 93 additions & 78 deletions

File tree

app.js

Lines changed: 1 addition & 78 deletions
Original file line numberDiff line numberDiff line change
@@ -199,84 +199,6 @@ app.set('views', path.join(__dirname, '/public/views'))
199199
app.engine('ejs', ejs.renderFile)
200200
// set view engine
201201
app.set('view engine', 'ejs')
202-
// get status
203-
app.get('/status', function (req, res, next) {
204-
realtime.getStatus(function (data) {
205-
res.set({
206-
'Cache-Control': 'private', // only cache by client
207-
'X-Robots-Tag': 'noindex, nofollow', // prevent crawling
208-
'HackMD-Version': config.version
209-
})
210-
res.send(data)
211-
})
212-
})
213-
// get status
214-
app.get('/temp', function (req, res) {
215-
var host = req.get('host')
216-
if (config.alloworigin.indexOf(host) === -1) {
217-
response.errorForbidden(res)
218-
} else {
219-
var tempid = req.query.tempid
220-
if (!tempid) {
221-
response.errorForbidden(res)
222-
} else {
223-
models.Temp.findOne({
224-
where: {
225-
id: tempid
226-
}
227-
}).then(function (temp) {
228-
if (!temp) {
229-
response.errorNotFound(res)
230-
} else {
231-
res.header('Access-Control-Allow-Origin', '*')
232-
res.send({
233-
temp: temp.data
234-
})
235-
temp.destroy().catch(function (err) {
236-
if (err) {
237-
logger.error('remove temp failed: ' + err)
238-
}
239-
})
240-
}
241-
}).catch(function (err) {
242-
logger.error(err)
243-
return response.errorInternalError(res)
244-
})
245-
}
246-
}
247-
})
248-
// post status
249-
app.post('/temp', urlencodedParser, function (req, res) {
250-
var host = req.get('host')
251-
if (config.alloworigin.indexOf(host) === -1) {
252-
response.errorForbidden(res)
253-
} else {
254-
var data = req.body.data
255-
if (!data) {
256-
response.errorForbidden(res)
257-
} else {
258-
if (config.debug) {
259-
logger.info('SERVER received temp from [' + host + ']: ' + req.body.data)
260-
}
261-
models.Temp.create({
262-
data: data
263-
}).then(function (temp) {
264-
if (temp) {
265-
res.header('Access-Control-Allow-Origin', '*')
266-
res.send({
267-
status: 'ok',
268-
id: temp.id
269-
})
270-
} else {
271-
response.errorInternalError(res)
272-
}
273-
}).catch(function (err) {
274-
logger.error(err)
275-
return response.errorInternalError(res)
276-
})
277-
}
278-
}
279-
})
280202

281203
function setReturnToFromReferer (req) {
282204
var referer = req.get('referer')
@@ -417,6 +339,7 @@ if (config.email) {
417339
})
418340
}
419341
app.use(require('./lib/web/baseRouter'))
342+
app.use(require('./lib/web/statusRouter'))
420343

421344
app.post('/login', urlencodedParser, function (req, res, next) {
422345
if (!req.body.email || !req.body.password) return response.errorBadRequest(res)

lib/web/statusRouter.js

Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,92 @@
1+
'use strict'
2+
3+
const Router = require('express').Router
4+
5+
const response = require('../response')
6+
const realtime = require('../realtime')
7+
const config = require('../config')
8+
const models = require('../models')
9+
const logger = require('../logger')
10+
11+
const {urlencodedParser} = require('./utils')
12+
13+
const statusRouter = module.exports = Router()
14+
15+
// get status
16+
statusRouter.get('/status', function (req, res, next) {
17+
realtime.getStatus(function (data) {
18+
res.set({
19+
'Cache-Control': 'private', // only cache by client
20+
'X-Robots-Tag': 'noindex, nofollow', // prevent crawling
21+
'HackMD-Version': config.version
22+
})
23+
res.send(data)
24+
})
25+
})
26+
// get status
27+
statusRouter.get('/temp', function (req, res) {
28+
var host = req.get('host')
29+
if (config.alloworigin.indexOf(host) === -1) {
30+
response.errorForbidden(res)
31+
} else {
32+
var tempid = req.query.tempid
33+
if (!tempid) {
34+
response.errorForbidden(res)
35+
} else {
36+
models.Temp.findOne({
37+
where: {
38+
id: tempid
39+
}
40+
}).then(function (temp) {
41+
if (!temp) {
42+
response.errorNotFound(res)
43+
} else {
44+
res.header('Access-Control-Allow-Origin', '*')
45+
res.send({
46+
temp: temp.data
47+
})
48+
temp.destroy().catch(function (err) {
49+
if (err) {
50+
logger.error('remove temp failed: ' + err)
51+
}
52+
})
53+
}
54+
}).catch(function (err) {
55+
logger.error(err)
56+
return response.errorInternalError(res)
57+
})
58+
}
59+
}
60+
})
61+
// post status
62+
statusRouter.post('/temp', urlencodedParser, function (req, res) {
63+
var host = req.get('host')
64+
if (config.alloworigin.indexOf(host) === -1) {
65+
response.errorForbidden(res)
66+
} else {
67+
var data = req.body.data
68+
if (!data) {
69+
response.errorForbidden(res)
70+
} else {
71+
if (config.debug) {
72+
logger.info('SERVER received temp from [' + host + ']: ' + req.body.data)
73+
}
74+
models.Temp.create({
75+
data: data
76+
}).then(function (temp) {
77+
if (temp) {
78+
res.header('Access-Control-Allow-Origin', '*')
79+
res.send({
80+
status: 'ok',
81+
id: temp.id
82+
})
83+
} else {
84+
response.errorInternalError(res)
85+
}
86+
}).catch(function (err) {
87+
logger.error(err)
88+
return response.errorInternalError(res)
89+
})
90+
}
91+
}
92+
})

0 commit comments

Comments
 (0)