-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathapp.js
More file actions
89 lines (76 loc) · 2.75 KB
/
app.js
File metadata and controls
89 lines (76 loc) · 2.75 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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
require('colors')
console.log('🤖 REST API'.bold)
if (process.env.NODE_ENV === 'production') {
console.log('In production'.bold.cyan)
}
const express = require('express')
const app = express()
app.services = {}
const services = require('../services-node/src/wrappers')
const commander = new services.Commander(parseInt(process.env.COMMANDER_PORT) || 9040)
commander.on('config', (config) => {
console.log('Commander config updated')
console.log('Update services wrappers')
app.services.account = new services.Account(config.services.account.port)
app.services.apikeys = new services.APIKeys(config.services.apikeys.port)
app.services.market = new services.Market(config.services.market.port)
app.services.ohlcv = new services.OHLCV(config.services.ohlcv.port)
app.services.orders = new services.Orders(config.services.orders.port)
app.services.ticker = new services.Ticker(config.services.ticker.port)
app.services.trader = new services.Trader(config.services.trader.port)
app.services.uds = new services.UDS(config.services.uds.port)
marketsBySymbols = config.markets.reduce((acc, cur) => {
acc[cur.symbol] = cur
return acc
}, {})
})
const morgan = require('morgan')
if (process.env.NODE_ENV === 'production') {
app.use(morgan('tiny'))
} else {
app.use(morgan('dev'))
}
app.use((req, res, next) => {
commander.config().then((config) => {
req.config = config
req.services = app.services
req.marketsBySymbols = marketsBySymbols
req.config.marketsBySymbols = marketsBySymbols
next()
}).catch(err => {
next(err)
})
})
app.use(require('./src/middlewares/timing'))
app.use(require('./src/routes/ping'))
app.use(require('./src/routes/info'))
app.use(require('./src/routes/market'))
app.use(require('./src/routes/ticker'))
app.use(require('./src/routes/klines'))
app.use(require('./src/routes/trade'))
app.use(require('./src/routes/trade'))
app.use(require('./src/routes/orders'))
app.use(require('./src/routes/user'))
app.use(require('./src/routes/uds'))
app.use(require('./src/routes/auth'))
app.use((req, res) => {
res.set('Content-Type', 'text/plain').status(404).send("🤖 L2QQ REST API")
})
app.use(require('./src/middlewares/errors'))
commander.once('config', () => {
const server = require('http').createServer(app)
const port = parseInt(process.env.PORT) || 9000
server.listen(port, () => {
console.log(`Listening on: ${server.address().port}`.green.bold)
})
process.on('SIGINT', () => {
console.log('SIGINT signal received'.red.bold)
server.close((err) => {
if (err) {
console.error(err)
process.exit(1)
}
process.exit(0)
})
})
})