/
index.js
85 lines (70 loc) · 2.15 KB
/
index.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
const nunjucks = require('nunjucks')
const express = require('express')
const Redis = require('ioredis')
const axios = require('axios')
console.log('env.NODE_ENV:', process.env.NODE_ENV)
console.log('env.WEBSITE_PORT:', process.env.WEBSITE_PORT)
console.log('env.REDIS_HOST:', process.env.REDIS_HOST)
console.log('env.FRONT:', process.env.FRONT)
const NODE_ENV = process.env.NODE_ENV || 'production'
const WEBSITE_PORT = process.env.WEBSITE_PORT || 3000
const REDIS_HOST = process.env.REDIS_HOST || 'redis'
// /sync/git/repo
const FRONT = process.env.FRONT || '../front'
const app = express()
app.use(express.static(FRONT + '/public'))
app.use(express.json())
nunjucks.configure(FRONT + '/views', {
express: app,
autoescape: false,
noCache: true
})
app.set('view engine', 'njk')
app.locals.node_env = NODE_ENV
app.locals.version = require('./package.json').version
if (NODE_ENV == 'development') {
const livereload = require('connect-livereload')
app.use(livereload())
}
const redis = new Redis({
port: 6379,
host: REDIS_HOST
})
app.get('/', async (req, res) => {
try {
res.render('index')
} catch (err) {
return res.json({
code: err.code,
message: err.message
})
}
})
/*
curl http://localhost:3000/vote
*/
app.get('/vote', async (req, res) => {
let up = await redis.get('up')
let down = await redis.get('down')
return res.send({ up: Number(up) , down: Number(down) })
})
/*
curl http://localhost:3000/vote \
--header 'Content-Type: application/json' \
--data '{"vote":"up"}'
*/
app.post('/vote', async (req, res) => {
try {
console.log('POST /vote: %j', req.body)
console.log(req.body.vote)
const result = await redis.incr(req.body.vote)
console.log('result:', result)
return res.send({ success: true, result: 'hello' })
} catch (err) {
console.log('ERROR: POST /vote: %s', err.message || err.response || err);
res.status(500).send({ success: false, reason: 'internal error' });
}
})
app.listen(WEBSITE_PORT, () => {
console.log(`listening on port ${WEBSITE_PORT}`)
})