Have ideas to improve npm?Join in the discussion! »

    whoosh

    1.4.0 • Public • Published

    Whoosh

    Whoosh is an ultra thin wrapper for SFTPStream, with the additional benefit of being able to easily stream in memory content to/from an SFTP server.

    NPM version NPM downloads Build Status Code Climate Test Coverage Code Style Dependency Status devDependencies Status

    API

    connect(<params>, <cb>)

    Connect to an sftp server

    Whoosh.connect({
        hostname: 'sftp.example.com',
        port: 22,
        username: 'fred',
        password: 'secret'
    }, (err, client) => {
        // profit :)
    })

    See the ssh2 client docs 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.

    Whoosh.connect(config, (err, client) => {
        if (err) throw err
        client.isConnected() // returns true
    })

    isConnected(<cb>)

    Asynchronous version of isConnected

    Whoosh.connect(config, (err, client) => {
        if (err) throw err
        client.isConnected((err, connected) => {
            // Check connected status here
        )}
    })

    getContent(<path>, [<options>], <cb>)

    Streams the contents of a remote file to a variable

    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 createReadStream method.

    putContent(<content;>, <path>, [<options>], <cb>)

    Streams the contents of a variable to a remote file

    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 createWriteStream method.

    exists

    Reports on whether a remote file exists

    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 so all the other SFTP methods are available. e.g.

    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...

    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.

    Install

    npm i whoosh

    DownloadsWeekly Downloads

    267

    Version

    1.4.0

    License

    ISC

    Unpacked Size

    21.5 kB

    Total Files

    15

    Last publish

    Collaborators

    • avatar
    • avatar
    • avatar
    • avatar