Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/guidesmiths/whoosh
Stream content to/from an SFTP Server
https://github.com/guidesmiths/whoosh
Last synced: 2 months ago
JSON representation
Stream content to/from an SFTP Server
- Host: GitHub
- URL: https://github.com/guidesmiths/whoosh
- Owner: guidesmiths
- License: isc
- Created: 2015-06-08T22:13:27.000Z (over 9 years ago)
- Default Branch: master
- Last Pushed: 2022-08-16T19:15:38.000Z (over 2 years ago)
- Last Synced: 2024-10-31T17:45:37.816Z (3 months ago)
- Language: JavaScript
- Homepage:
- Size: 772 KB
- Stars: 14
- Watchers: 11
- Forks: 6
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE.txt
Awesome Lists containing this project
README
# Whoosh
Whoosh is an ultra thin wrapper for [SFTPStream](https://github.com/mscdex/ssh2-streams/blob/master/SFTPStream.md), with the additional benefit of being able to easily transfer in memory content to/from an SFTP server.
[![NPM version](https://img.shields.io/npm/v/whoosh.svg?style=flat-square)](https://www.npmjs.com/package/whoosh)
[![NPM downloads](https://img.shields.io/npm/dm/whoosh.svg?style=flat-square)](https://www.npmjs.com/package/whoosh)
[![Code Climate](https://codeclimate.com/github/guidesmiths/whoosh/badges/gpa.svg)](https://codeclimate.com/github/guidesmiths/whoosh)
[![Test Coverage](https://codeclimate.com/github/guidesmiths/whoosh/badges/coverage.svg)](https://codeclimate.com/github/guidesmiths/whoosh/coverage)
[![Code Style](https://img.shields.io/badge/code%20style-prettier-brightgreen.svg)](https://github.com/prettier/prettier)
[![Discover zUnit](https://img.shields.io/badge/Discover-zUnit-brightgreen)](https://www.npmjs.com/package/zunit)## API
### connect(<params>, <cb>)
Connect to an sftp server
```js
Whoosh.connect(
{
hostname: 'sftp.example.com',
port: 22,
username: 'fred',
password: 'secret',
},
(err, client) => {
// profit :)
}
);
```See the [ssh2 client docs](https://github.com/mscdex/ssh2#client-methods) for a full list of connection parameters
### disconnect(<cb>)
Disconnect from an sftp server
```
Whoosh.connect(config, (err, client) => {
client.disconnect(() => {
// Disconnected
})
})
```### isConnected()
Returns true when connected to the SFTP server. Useful for checking whether a previously established connection has dropped.
```js
Whoosh.connect(config, (err, client) => {
if (err) throw err;
client.isConnected(); // returns true
});
```### isConnected(<cb>)
Asynchronous version of isConnected
```js
Whoosh.connect(config, (err, client) => {
if (err) throw err;
client.isConnected((err, connected) => {
// Check connected status here
});
});
```### getContent(<path>, [<options>], <cb>)
Downloads the contents of a remote file into a variable
```js
Whoosh.connect(config, (err, client) => {
if (err) throw err;
client.getContent('some/remote/file', (err, content, stats) => {
client.disconnect(() => {
if (err) throw err;
console.log(`Downloaded ${stats.bytes} bytes in ${stats.duration} ms`);
});
});
});
```The options parameter is is optional. When specified it is passed straight through to [SFTPStream's](https://github.com/mscdex/ssh2-streams/blob/master/SFTPStream.md) `createReadStream` method.
### putContent(<content>, <path>, [<options>], <cb>)
Uploads the contents of a variable to a remote file
```js
Whoosh.connect(config, (err, client) => {
if (err) throw err;
client.putContent('some conent', 'some/remote/file', (err, stats) => {
client.disconnect(() => {
if (err) throw err;
console.log(`Uploaded ${stats.bytes} bytes in ${stats.duration} ms`);
});
});
});
```The options parameter is is optional. When specified it is passed straight through to [SFTPStream's](https://github.com/mscdex/ssh2-streams/blob/master/SFTPStream.md) `createWriteStream` method.
### exists
Reports on whether a remote file exists
```js
Whoosh.connect(config, function (err, client) {
if (err) throw err;
client.exists('some/remote/file', (err, exists) => {
client.disconnect(() => {
if (err) throw err;
console.log(exists ? 'File exists' : 'File does not exist');
});
});
});
```## Everything else
The `client` object is just a decorated instance of [SFTPStream](https://github.com/mscdex/ssh2-streams/blob/master/SFTPStream.md) so all the other SFTP methods are available. e.g.
```js
Whoosh.connect(config, function (err, client) {
if (err) throw err;
client.unlink('some/remote/file', function (err) {
client.disconnect(() => {
if (err) throw err;
console.log('Deleted some/remote/file');
});
});
});
```### keyboard interactive
If the server requires keyboard interactive authentication you can configure this as follows...
```js
Whoosh.connect(
{
hostname: 'sftp.example.com',
port: 22,
tryKeyboard: true,
challenges: [
{
pattern: /^Username:$/,
response: 'fred',
},
{
pattern: /^Password:$/,
response: 'secret',
},
],
},
(err, client) => {
// profit :)
}
);
```The exact challenge patterns will be server dependent.
### Running tests
```
docker network create local
npm run docker
npm t
```