-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathserver.js
93 lines (82 loc) · 2.97 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
var es = require('./es')
var http = require('http')
var rut = require('rut')
var stack = require('stack')
var port = process.env.PORT || process.argv[2] || 1039
stack.handler = function (req, res, err) {
if (err) {
if (err.status) {
res.statusCode = err.status
return res.send('{"message": "' + err.message + '"}')
}
console.error(err.stack)
res.statusCode = 500
return res.send('{"message": "Internal Server Error"}')
}
console.warn('Warning: Not Found')
res.statusCode = 404
res.send('{"message": "Not Found"}')
}
var cors = function (req, res, next) {
res.setHeader('Access-Control-Allow-Origin', '*')
next()
}
var jsonContent = function (req, res, next) {
res.setHeader('Content-Type', 'application/json')
// Provide a method that sets content length to avoid
// transer-encoding: chunked in old nginx
res.send = function (content) {
content = content + '\n'
res.setHeader('Content-Length', Buffer.byteLength(content))
res.end(content)
}
next()
}
var reqLog = function (req, res, next) {
console.log(req.method, req.url)
next()
}
var reqUser = function (req, res, next) {
var token = req.headers.authorization
//var token = req.headers.authorization
//console.log(req.headers);
if (!token) return next()
es.search({_type: 'user'}, {
query: {filtered: {filter: {term: {token: token}}}}
}, function (err, data) {
if (err) return next(err)
if (!data.hits.hits.length) return next({status: 401, message: 'Unauthorized'})
req.user = data.hits.hits[0]._source
next()
})
}
http.createServer(stack(
cors,
jsonContent,
reqLog,
reqUser,
rut.get('/', require('./routes')),
rut.get('/search', require('./routes/search')),
rut.get('/schemas', require('./routes/schemas')),
rut.get('/wgxc/schedule/*', require('./routes/wgxc/schedule')),
rut.get('/ta/schedule/*', require('./routes/ta/schedule')),
rut.get('/wgxc/index-gallery', require('./routes/wgxc/index-gallery')),
rut.get('/ta/index-gallery', require('./routes/ta/index-gallery')),
rut.get('/ta/artists/*', require('./routes/ta/artist-index')),
rut.get('/ta/artists', require('./routes/ta/artist-index')),
rut.get('/ta/works/*', require('./routes/ta/work-index')),
rut.get('/ta/works', require('./routes/ta/work-index')),
rut.post('/add-event', require('./routes/add-event')),
//rut.get('/related-items/*/*/*', require('./routes/related-items')),
rut.post('/login', require('./routes/login')),
rut.post('/bulk', require('./routes/bulk')),
rut.post('/', require('./routes/item-set')),
rut.get(/^\/(\w{6})$/, require('./routes/item-get')),
rut.put(/^\/(\w{6})$/, require('./routes/item-set')),
rut.delete(/^\/(\w{6})$/, require('./routes/item-delete')),
//rut.get(/^\/genb\/(\w{6})\/(\w{4}-\w{2}-\w{2})\/(\w{4}-\w{2}-\w{2})$/, require('./routes/show-genb'))
rut.post('/genb', require('./routes/show-genb'))
)).listen(port, function () {
console.log('Listening on port', port)
if (process.send) process.send('online')
})