1 | const http = require('http')
|
2 | const cfg = require('./config')
|
3 | const logger = require('./logger')
|
4 | const helper = require('./helper')
|
5 |
|
6 | exports.stop = function (config, done) {
|
7 | config = config || {}
|
8 | logger.setupFromConfig(config)
|
9 | const log = logger.create('stopper')
|
10 | done = helper.isFunction(done) ? done : process.exit
|
11 | config = cfg.parseConfig(config.configFile, config)
|
12 |
|
13 | const request = http.request({
|
14 | hostname: config.hostname,
|
15 | path: config.urlRoot + 'stop',
|
16 | port: config.port,
|
17 | method: 'GET'
|
18 | })
|
19 |
|
20 | request.on('response', function (response) {
|
21 | if (response.statusCode === 200) {
|
22 | log.info('Server stopped.')
|
23 | done(0)
|
24 | } else {
|
25 | log.error(`Server returned status code: ${response.statusCode}`)
|
26 | done(1)
|
27 | }
|
28 | })
|
29 |
|
30 | request.on('error', function (e) {
|
31 | if (e.code === 'ECONNREFUSED') {
|
32 | log.error(`There is no server listening on port ${config.port}`)
|
33 | done(1, e.code)
|
34 | } else {
|
35 | throw e
|
36 | }
|
37 | })
|
38 | request.end()
|
39 | }
|