UNPKG

nest-sftp

Version:

Nest Framework wrapper around ssh2-sftp-client

139 lines (110 loc) 3.31 kB
<p align="center"> <a href="http://nestjs.com/" target="blank"><img src="https://blogs.mulesoft.com/wp-content/uploads/2017/11/sftp-ftp-mulesoft-connector-anypoint.png" /></a> </p> # NEST SFTP This is nest-sftp. ## Description [Nest](https://github.com/nestjs/nest) framework module wrapper around [ssh2-sftp-client](https://github.com/jyu213/ssh2-sftp-client) ## Installation ```bash $ npm install --save nest-sftp ``` ## Register in AppModule Register the SftpModule in you App Module. This version uses forRootAsync ```typescript import { SftpModule } from 'nest-sftp'; @Module({ imports: [ SftpModule.forRootAsync( { useFactory: (configService: ConfigService) => { return configService.getSftpConnectionInfo(); }, inject: [ConfigService], imports: [AppModule], }, false, ), ], controllers: [], providers: [ConfigService], exports: [ConfigService], }) export class AppModule {} ``` The Options object implements the ConnectConfig from ssh2. ```typescript import { SftpModule } from 'nest-sftp'; @Module({ imports: [ SftpModule.forRoot( { host: 'fakehost.com', port: 22, username: 'fakeUser', password: '*****', // passwords should not contain \ (thy should be espaced like \\) and they cannot contain ! or ( }, false, ), ], controllers: [], providers: [], }) export class AppModule {} ``` With debug logging: ```typescript import { SftpModule } from 'nest-sftp'; @Module({ imports: [ SftpModule.forRoot( { host: 'fakehost.com', port: 22, username: 'fakeUser', password: '*****', // passwords should not contain \ (thy should be espaced like \\) and they cannot contain ! or ( debug: console.log, // adds logging for researching problems }, false, ), ], controllers: [], providers: [], }) export class AppModule {} ``` ## Dependency Inject Service The SftpModule is global. The forRoot() method will open the connection as well during AppModule registration. Then the SftpClientService can be injected into your class. ```typescript import { SftpClientService } from 'nest-sftp'; export class AppService { private readonly logger: Logger; constructor(private readonly sftpClient: SftpClientService) { logger = new Logger(); } async download( remotePath: string, localPath: string, ): Promise<string | NodeJS.ReadableStream | Buffer> { return await this.sftpClient.download(remotePath, localPath); } // change connection to a different user/password prior to upload async submit( remotePath: string, localPath: string, submitConfig: ConnectConfig, ): Promise<string | NodeJS.ReadableStream | Buffer> { await this.sftpClient.resetConnection(submitConfig); return await this.sftpClient.upload(remotePath, localPath); } } ``` ## Support Nest is an MIT-licensed open source project. It can grow thanks to the sponsors and support by the amazing backers. If you'd like to join them, please [read more here](https://docs.nestjs.com/support). ## Stay in touch - Author - [Benjamin Main](mailto::bmain@lumeris.com) - Author - [Victor Frank](mailto::vfrank@lumeris.com) ## License Nest SFTP is [MIT licensed](LICENSE).