Pipe ReadableStream to HTTPs Request

PHOTO EMBED

Tue May 31 2022 16:49:23 GMT+0000 (Coordinated Universal Time)

Saved by @petersdavis #nodejs

const fs = require('fs');
const https = require('https');
const {Transform} = require('stream');

const transformGenerator = function() {
    let flushCallback = ()=>{};   
    const options = {
        host: <url>, //without protocol https://
        port: 443,
        path: </anything/after/slash>,
        method: 'POST' 
    };

    const transform = new Transform(); 
    const req = https.request(options, (res)=>{
        res.on('data', (d) => {
            transform.push(d);
        });

        res.on('end', () => {
            flushCallback();
            transform.destroy()
        });
    })

    transform._transform = (chunk, encoding, callback) => {
            req.write(chunk);
            callback()
    }

    transform.pipe(req);
    transform._flush = (cb)=>{
        req.end();
        flushCallback = cb;
    }
    return transform;
}

stream = fs.createReadStream('./example.txt');
stream.pipe(transformGenerator()).pipe(process.stdout);
content_copyCOPY