Share your code. npm Orgs help your team discover, share, and reuse code. Create a free org »

    readfrompublic

    ReadFrom Build Status

    Read text content from different endpoints with Node.js.

    Quick examples:

    // Initiate the ReadFrom instance. Alternative:
    //    var ReadFrom = require('readfrom'),
    //        RF = new ReadFrom();
    var ReadFrom = new (require('readfrom'))();
     
    // Read from a file.
    ReadFrom.file('file.txt').then((data) => {
       console.log(data);
     }).catch((error) => {
       console.trace(error);
    });
     
    // Read from a file, line by line.
    ReadFrom.file('file.txt', undefined, (line) => {
       console.log('LINE: %s', line);
    });
     
    // Read from STDIN. (echo "This is an example." | node stdin-example.js)
    ReadFrom.stdin().then((data) =>
       console.log(data); // `This is an example.`
     }).catch((error) => {
       console.trace(error);
    });
     
    // Read from STDIN, line by line. (cat file.txt | node stdin-by-line.js)
    ReadFrom.stdin(undefined, (line) => {
       console.log('LINE: %s', line);
    });
     
    // Read from a URL.
    ReadFrom.url('https://example.com/').then((data) => {
       console.log(data); // Print the example.com HTML content.
     }).catch((error) => {
       console.trace(error);
    });
     
    // Read from a URL, line by line.
    ReadFrom.url('https://example.com/', undefined, (line) => {
       console.log('LINE: %s', line);
    });
     
    // Read from clipboard.
    ReadFrom.clipboard().then((data) => {
       console.log(data); // Print whatever is in your clipboard.
     }).catch((error) => {
       console.trace(error);
    });
     
    // Read from clipboard, line by line.
    ReadFrom.clipboard(undefined, (line) => {
       console.log('LINE: %s', line);
    });
     
     
    // Read STDOUT from child_process.spawn()
    // https://nodejs.org/dist/latest/docs/api/child_process.html#child_process_child_process_spawn_command_args_options
    ReadFrom.spawn('top', ['-n 1', '-b']).then((data) => {
       console.log(data); // Print a single iteration of the linux `top` command.
     }).catch((error) => {
       console.trace(error);
    });
     
    // Read STDOUT from child_process.spawn(), line by line.
    // https://nodejs.org/dist/latest/docs/api/child_process.html#child_process_child_process_spawn_command_args_options
    ReadFrom.spawn('top', ['-n 1', '-b'], undefined, (line) => {
       console.log('LINE: %s', line); // Print a single iteration of the linux `top` command.
    });
     
    // Create a readable stream number counter.
    var Readable = require('stream').Readable,
        Stream = new Readable;
    Stream._read = ((c, m) => {
       return () => { Stream.push((<= m ? Buffer.from(String(c++)) : null)); }
    })(0, 50);
    ReadFrom.stream(Stream).then((data) => {
       console.log(data); // Print the numbers, from the counter stream.
     }).catch((error) => {
       console.trace(error);
    });
     
    // Create a readable stream number counter, with new lines for lineParser.
    var Readable = require('stream').Readable,
        Stream = new Readable;
    Stream._read = ((c, m) => {
        return () => { Stream.push((<= m ? Buffer.from(String([c++, "\n"].join(''))) : null)); };
    })(0, 50);
    ReadFrom.stream(Stream, undefined, (num) => {
       console.log(num);
    });
     
    // Read from a TCP socket. (echo "This is an example!" | nc 127.0.0.1 8080)
    // Address defaults to 0.0.0.0!
    ReadFrom.port(8080, { address: '127.0.0.1' }).then((data) => {
        console.log(data);
     }).catch((error) => {
        console.log(error);
    });
     
    // Read from a TCP socket, line by line. (cat file.txt | nc 127.0.0.1 8080)
    // Address defaults to 0.0.0.0!
    ReadFrom.port(8080, { address: '127.0.0.1' }, (line) => {
        console.log('LINE: %s', line);
     }).then(() => {
        console.log('\nFinished!');
     }).catch((error) => {
        console.log(error);
    });
     
    // Read from a UNIX socket, line by line. (cat file.txt | nc -U /tmp/ReadFrom.sock)
    //
    // NOTE: This also works without line by line parsing, by returning with a Promise.
    //       ReadFrom.unixSocket('/tmp/my-socket.sock').then((data) => { }).catch(() => { })
    ReadFrom.unixSocket(undefined, undefined, (line) => {
        console.log('LINE: %s', line);
     }).then(() => {
        console.log('\nFinished!');
     }).catch((error) => {
        console.log(error);
    });
     
    // Read from an SSH server. If `trim` is true, run String.trim() on the results.
    // If `empty` is true allow the return of empty data. 'Commands' can be a string or array.
    // If `combine` is passed in SSH options, the commands Array will be joined by that string. (;, &&, etc.)
    //    {Instance}.ssh(<Commands>, <SSH Options>[, <Options>]).then(<FN>).catch(<FN>)
    //
    //    NOTE: The Promise returns an Array with the following object(s):
    //          { stdout: <String>, stderr: <String>, code: <Int>, signal: <String|Undefined> }
     
    // Supports all options for ssh2. https://github.com/mscdex/ssh2
    var obj = {
        host: 'server.domain.tld',
        port: 22,
        username: 'USERNAME',
        password: 'PASSWORD',
        // privateKey: require('fs').readFileSync('/path/to/key')
        combine: ';'
    };
    ReadFrom.ssh(['uptime', 'notacommand', 'free -m', 'df -h', 'uname -a'], obj).then((results) => {
        console.log(results);
     }).catch((error) => {
        console.trace(error);
    });
     
    // Read random X bytes from crypto.randomBytes() as a Buffer, which can be converted
    // with toString(<encoding>).
    //    {Instance}.random(<Byte count>).then(<FN>).catch(<FN>)
    ReadFrom.random(256).then((results) => {
        console.log(results.toString('hex')); // Convert Buffer to hex of random bytes.
     }).catch((error) => {
        console.trace(error);
    });
     
    // Pass `encoding` in options for random() to convert with toString BEFORE returning.
    ReadFrom.random(256, { encoding: 'base64' }).then((results) => {
        console.log(results); // base64 of random bytes.
     }).catch((error) => {
        console.trace(error);
    });
     
    // Pass chunkSize to create an array of buffers. This example creates an array with 4
    // indexes, each containing a buffer of 256 bytes. Can be combined with `encoding`.
    ReadFrom.random(1024, { chunkSize: 256 }).then((bytes) => {
       console.log(bytes, bytes.length);
     }).catch((error) => {
       console.log(error);
    });

    TODO:

    • Add: ReadFrom.ssh, ReadFRom.url, ReadFrom.random
      • Improve/comment ReadFrom.ssh.
    • Update "quick examples" to ES6.
    • Create documentation.
    • Add tests with mocha.
      • Improve/finish tests for travis-ci.
    • Improve/comment `./libs/SSHPromise.js'

    install

    npm i readfrom

    Downloadsweekly downloads

    8

    version

    1.0.0

    license

    MIT

    repository

    githubgithub

    last publish

    collaborators

    • avatar