From c9ff82853b34b74cb9de248e791f8b6cec123d12 Mon Sep 17 00:00:00 2001 From: Kay Schecker Date: Sat, 21 Nov 2020 19:51:03 +0100 Subject: [PATCH] fix(#130): add proxy support --- apps/generator-cli/src/app/app.module.ts | 51 ++++++++++++++++-------- 1 file changed, 34 insertions(+), 17 deletions(-) diff --git a/apps/generator-cli/src/app/app.module.ts b/apps/generator-cli/src/app/app.module.ts index e2fdb7ec8..4dca7a3ea 100644 --- a/apps/generator-cli/src/app/app.module.ts +++ b/apps/generator-cli/src/app/app.module.ts @@ -1,14 +1,31 @@ -import {HttpModule, Inject, Module, OnApplicationBootstrap} from '@nestjs/common'; +import { HttpModule, Inject, Module, OnApplicationBootstrap } from '@nestjs/common'; +import { AxiosProxyConfig } from 'axios'; +import { Command } from 'commander'; +import * as url from 'url'; -import {COMMANDER_PROGRAM, LOGGER} from './constants'; -import {Command} from 'commander'; -import {VersionManagerController} from './controllers/version-manager.controller'; -import {ConfigService, GeneratorService, PassTroughService, UIService, VersionManagerService} from './services'; +import { COMMANDER_PROGRAM, LOGGER } from './constants'; +import { VersionManagerController } from './controllers/version-manager.controller'; +import { ConfigService, GeneratorService, PassTroughService, UIService, VersionManagerService } from './services'; + +let proxyConfig: AxiosProxyConfig; +const proxyUrl = process.env.HTTPS_PROXY || process.env.HTTP_PROXY; + +if (proxyUrl) { + const proxy = url.parse(proxyUrl); + const proxyAuth = proxy.auth && proxy.auth.split(':'); + + proxyConfig = { + host: proxy.hostname, + port: parseInt(proxy.port, 10), + auth: proxyAuth && { username: proxyAuth[0], password: proxyAuth[1] }, + protocol: proxy.protocol.replace(':', '') + }; +} @Module({ - imports: [HttpModule], + imports: [HttpModule.register({proxy: proxyConfig})], controllers: [ - VersionManagerController, + VersionManagerController ], providers: [ UIService, @@ -20,31 +37,31 @@ import {ConfigService, GeneratorService, PassTroughService, UIService, VersionMa provide: COMMANDER_PROGRAM, useValue: new Command('openapi-generator-cli').helpOption(false).usage(' []') }, - {provide: LOGGER, useValue: console}, - ], + { provide: LOGGER, useValue: console } + ] }) export class AppModule implements OnApplicationBootstrap { constructor( @Inject(COMMANDER_PROGRAM) private readonly program: Command, private readonly versionManager: VersionManagerService, - private readonly passTroughService: PassTroughService, + private readonly passTroughService: PassTroughService ) { } onApplicationBootstrap = async () => { - let selectedVersion = this.versionManager.getSelectedVersion() + let selectedVersion = this.versionManager.getSelectedVersion(); if (!selectedVersion) { - const [{version}] = await this.versionManager.search(['latest']).toPromise() - await this.versionManager.setSelectedVersion(version) - selectedVersion = version + const [{ version }] = await this.versionManager.search(['latest']).toPromise(); + await this.versionManager.setSelectedVersion(version); + selectedVersion = version; } - await this.versionManager.downloadIfNeeded(selectedVersion) - await this.passTroughService.init() - this.program.parse(process.argv) + await this.versionManager.downloadIfNeeded(selectedVersion); + await this.passTroughService.init(); + this.program.parse(process.argv); };