forked from pushkin-consortium-deprecated/deprecated1
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathserver.js
More file actions
75 lines (72 loc) · 2.09 KB
/
server.js
File metadata and controls
75 lines (72 loc) · 2.09 KB
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
let amqp = require('amqplib/callback_api');
const path = require('path');
const bodyParser = require('body-parser');
const cors = require('cors');
const fs = require('fs');
const app = require('express')();
let rpc = require('./rpc');
const printer = require('./printer');
const logger = require('./logger.js');
const dbWrite = require('./dbWrite');
const PORT = 3000;
app.use(bodyParser.json());
app.use(cors());
amqp.connect(process.env.AMPQ_ADDRESS, function(err, conn) {
if (err) {
return logger.error(err);
}
app.use((req, res, next) => {
logger.info(req.url);
next();
});
const controllers = fs
.readdirSync(path.resolve(__dirname, 'controllers'))
.filter(file => path.parse(file).ext === '.js');
controllers.forEach(controllerFile => {
const short = controllerFile.replace('.js', '');
const route = '/api/' + short;
const controller = require('./controllers/' + short)(rpc, conn, dbWrite);
app.use(route, controller);
});
app.post('/users', (req, res, next) => {
const { user, choiceId, questionId } = req.body;
var rpcInput = {
method: 'createUser',
arguments: [{ name: 'rob' }]
};
const channelName = 'db_rpc_worker';
return rpc(conn, channelName, rpcInput)
.then(data => {
res.json(data);
})
.catch(next);
});
app.get('/api/users', (req, res, next) => {
var rpcInput = {
method: 'allUsers'
};
const channelName = 'db_rpc_worker';
return rpc(conn, channelName, rpcInput)
.then(data => {
res.json(data);
})
.catch(next);
});
app.get('/api/routes', (req, res, next) => {
const routes = printer(app);
res.send(routes);
});
app.use((req, res, next) => {
res.status(404).json({ message: 'Route not found' });
});
app.use((err, req, res, next) => {
res.status(500);
res.json({ message: err.message });
logger.error(err.message);
});
app.listen(PORT, function() {
//Callback triggered when server is successfully listening. Hurray!
console.log('Server listening on: http://localhost:%s', PORT);
});
});
module.exports = app;