nest-sftp
v3.0.0
Published
Nest Framework wrapper around ssh2-sftp-client
Downloads
12,739
Readme
NEST SFTP
This is nest-sftp.
Description
Nest framework module wrapper around ssh2-sftp-client
Installation
$ npm install --save nest-sftp
Register in AppModule
Register the SftpModule in you App Module.
This version uses forRootAsync
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.
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:
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.
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.
Stay in touch
- Author - Benjamin Main
- Author - Victor Frank
License
Nest SFTP is MIT licensed.