From 53cf3faed13e5d66f1ee81845fda2bea6afe3394 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=B6ran=20Sander?= Date: Sat, 14 May 2022 19:17:46 +0200 Subject: [PATCH] fix: API docs REST endpoint doesn't work for pre-built binaries Fixes #443 --- .vscode/launch.json | 1 + src/app.js | 26 +++++++++++++++++++++++++- src/butler.js | 31 ++++++++++++++++++------------- src/package-lock.json | 12 ++++++------ src/package.json | 4 +++- 5 files changed, 53 insertions(+), 21 deletions(-) diff --git a/.vscode/launch.json b/.vscode/launch.json index 77845a53..68a41b8e 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -9,6 +9,7 @@ "request": "launch", "name": "Launch Program", "program": "${workspaceFolder}/src/butler.js", + "cwd": "${workspaceFolder}/src", // "args": [ // "--configfile", // "./config/production.yaml", diff --git a/src/app.js b/src/app.js index 32ee2689..b7ceb94d 100644 --- a/src/app.js +++ b/src/app.js @@ -123,6 +123,27 @@ async function build(opts = {}) { restServer.register(require('./plugins/sensible'), { options: Object.assign({}, opts) }); restServer.register(require('./plugins/support'), { options: Object.assign({}, opts) }); + // let apiDocPath = ''; + // if (process.pkg) { + // globals.logger.debug(`CONFIG: Running as standalone app.`); + // // apiDocPath = path.resolve(`${process.execPath}/docs/api_doc/butler-api.yaml`); + // apiDocPath = path.join(__dirname, '../docs/api_doc/butler-api.yaml'); + // } else { + // globals.logger.debug(`CONFIG: Not standalone app.`); + // apiDocPath = path.join(process.cwd(), '../docs/api_doc/butler-api.yaml'); + // } + // globals.logger.debug(`CONFIG: Reading static API doc file from ${apiDocPath}`); + + // restServer.register(FastifySwagger, { + // mode: 'static', + // specification: { + // path: apiDocPath, + // }, + // routePrefix: '/documentation', + // hideUntagged: false, + // exposeRoute: true, + // }); + restServer.register(FastifySwagger, { routePrefix: '/documentation', swagger: { @@ -168,7 +189,10 @@ async function build(opts = {}) { // --------------------------------------------------- // Configure X-HTTP-Method-Override handling proxyRestServer.register(FastifyReplyFrom, { - base: `http://localhost:${globals.config.get('Butler.restServerConfig.backgroundServerPort')}`, + // base: `http://localhost:${globals.config.get('Butler.restServerConfig.backgroundServerPort')}`, + base: `http://${globals.config.get('Butler.restServerConfig.serverHost')}:${globals.config.get( + 'Butler.restServerConfig.backgroundServerPort' + )}`, http: true, }); diff --git a/src/butler.js b/src/butler.js index 70a654c9..3c59312e 100644 --- a/src/butler.js +++ b/src/butler.js @@ -21,20 +21,25 @@ const start = async () => { globals.logger.debug(`REST server host: ${globals.config.get('Butler.restServerConfig.serverHost')}`); globals.logger.debug(`REST server port: ${globals.config.get('Butler.restServerConfig.serverPort')}`); - restServer.listen(globals.config.get('Butler.restServerConfig.backgroundServerPort'), 'localhost', (err, address) => { - if (err) { - globals.logger.error(`MAIN: Background REST server could not listen on ${address}`); - globals.logger.error(`MAIN: ${err}`); - restServer.log.error(err); - process.exit(1); - } - globals.logger.verbose(`MAIN: Background REST server listening on ${address}`); + // restServer.listen(globals.config.get('Butler.restServerConfig.backgroundServerPort'), 'localhost', (err, address) => { + restServer.listen( + globals.config.get('Butler.restServerConfig.backgroundServerPort'), + globals.config.get('Butler.restServerConfig.serverHost'), + (err, address) => { + if (err) { + globals.logger.error(`MAIN: Background REST server could not listen on ${address}`); + globals.logger.error(`MAIN: ${err}`); + restServer.log.error(err); + process.exit(1); + } + globals.logger.verbose(`MAIN: Background REST server listening on ${address}`); - restServer.ready((err2) => { - if (err2) throw err; - restServer.swagger(); - }); - }); + restServer.ready((err2) => { + if (err2) throw err; + restServer.swagger(); + }); + } + ); proxyRestServer.listen( globals.config.get('Butler.restServerConfig.serverPort'), diff --git a/src/package-lock.json b/src/package-lock.json index 9753f243..e75b9c0d 100644 --- a/src/package-lock.json +++ b/src/package-lock.json @@ -6346,9 +6346,9 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, "node_modules/snyk": { - "version": "1.925.0", - "resolved": "https://registry.npmjs.org/snyk/-/snyk-1.925.0.tgz", - "integrity": "sha512-U/dH0Ida/hEkOr4hbXe9StM8fQEAY+y/c6JZUEnT5EY+ykdH9csqv08L+aAcgRtmU9CYdVlptyBolzFHd30vUg==", + "version": "1.922.0", + "resolved": "https://registry.npmjs.org/snyk/-/snyk-1.922.0.tgz", + "integrity": "sha512-rvXj1Kk2CwDADa6A1DVX4SZPoO0sOKxgf5qY4TOK7sVmzWbXikrwtbhzhB/5innwPSjHR5dkvLPAzoMsD04aoA==", "dev": true, "bin": { "snyk": "bin/snyk" @@ -12050,9 +12050,9 @@ } }, "snyk": { - "version": "1.925.0", - "resolved": "https://registry.npmjs.org/snyk/-/snyk-1.925.0.tgz", - "integrity": "sha512-U/dH0Ida/hEkOr4hbXe9StM8fQEAY+y/c6JZUEnT5EY+ykdH9csqv08L+aAcgRtmU9CYdVlptyBolzFHd30vUg==", + "version": "1.922.0", + "resolved": "https://registry.npmjs.org/snyk/-/snyk-1.922.0.tgz", + "integrity": "sha512-rvXj1Kk2CwDADa6A1DVX4SZPoO0sOKxgf5qY4TOK7sVmzWbXikrwtbhzhB/5innwPSjHR5dkvLPAzoMsD04aoA==", "dev": true }, "sonic-boom": { diff --git a/src/package.json b/src/package.json index 4a90f81e..43649d6f 100644 --- a/src/package.json +++ b/src/package.json @@ -102,7 +102,9 @@ "node_modules/enigma.js/**/*.json" ], "assets": [ - "node_modules/fsevents/fsevents.node" + "node_modules/fsevents/fsevents.node", + "../docs/api_doc/butler-api.yaml", + "node_modules/@fastify/swagger" ] } }