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