Browse Source

fix: Generate swagger host and scheme

genarated swagger scheme and host based on `NC_PUBLIC_URL` environment variable

fixes #288

Signed-off-by: Pranav C Balan <pranavxc@gmail.com>
pull/293/head
Pranav C Balan 4 years ago
parent
commit
eb2adc1ef9
  1. 6
      packages/nocodb/src/lib/noco/rest/RestApiBuilder.ts

6
packages/nocodb/src/lib/noco/rest/RestApiBuilder.ts

@ -1508,9 +1508,13 @@ export class RestApiBuilder extends BaseApiBuilder<Noco> {
let swaggerBaseDocument: any = JSON.parse(JSON.stringify(await import('./ui/auth/swagger-base.xc.json'))); let swaggerBaseDocument: any = JSON.parse(JSON.stringify(await import('./ui/auth/swagger-base.xc.json')));
if (this.config?.auth?.jwt?.dbAlias !== this.connectionConfig.meta.dbAlias) { if (this.config?.auth?.jwt?.dbAlias !== this.connectionConfig.meta.dbAlias) {
swaggerBaseDocument = {...swaggerBaseDocument, tags: [], definitions: {}, paths: {}, host: req.get('host')}; swaggerBaseDocument = {...swaggerBaseDocument, tags: [], definitions: {}, paths: {}};
} }
const host = process.env.NC_PUBLIC_URL ? new URL(process.env.NC_PUBLIC_URL)?.host : req.get('host');
const scheme = process.env.NC_PUBLIC_URL ? new URL(process.env.NC_PUBLIC_URL)?.protocol.slice(0, -1) : req.protocol;
swaggerBaseDocument.host = host;
swaggerBaseDocument.schemes = [scheme];
glob.sync(path.join(this.config.toolDir, 'nc', this.projectId, this.getDbAlias(), 'swagger', 'swagger.json')).forEach(jsonFile => { glob.sync(path.join(this.config.toolDir, 'nc', this.projectId, this.getDbAlias(), 'swagger', 'swagger.json')).forEach(jsonFile => {
const swaggerJson = JSON.parse(fs.readFileSync(jsonFile, 'utf8')); const swaggerJson = JSON.parse(fs.readFileSync(jsonFile, 'utf8'));
swaggerBaseDocument.tags.push(...swaggerJson.tags); swaggerBaseDocument.tags.push(...swaggerJson.tags);

Loading…
Cancel
Save