HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux ip-172-31-4-197 6.8.0-1036-aws #38~22.04.1-Ubuntu SMP Fri Aug 22 15:44:33 UTC 2025 x86_64
User: ubuntu (1000)
PHP: 7.4.33
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: /var/www/web.enelar.com.co/node_modules/needle/examples/stream-multiple/stream-multiple.js
var needle = require('needle');
const fs = require('fs-extra')

function stream_multiple(req, res, _urls, stream_dir, index = 0) {
    if (index == 0) {
        // initial state
    }

    let writeStream;
    const uri = _urls[index];

    if (index == undefined) {
        index = 0;
        stream_multiple(req, res, _urls, stream_dir, index);
    } else {

        writeStream = fs.createWriteStream(`${stream_dir}` + `${index}.jpeg`);

        writeStream.on("ready", () => console.log({ msg: `STREAM::WRITE::READY::${index}` }));
        writeStream.on("open", () => console.log({ msg: `STREAM::WRITE::OPEN::${index}` }));
        writeStream.on("finish", () => console.log({ msg: `STREAM::WRITE::DONE::${index}` }));

        writeStream.on('close', () => {
            if (index >= _urls.length - 1) {
                res.redirect('/');
            } else {
                stream_multiple(req, res, _urls, stream_dir, index + 1);
            }
        })

        needle
            .get(uri, function (error, response) {
                if (response.bytes >= 1) {
                    // you want to kill our servers
                }

                if (!error && response.statusCode == 200) {
                    // good
                } else {
                    // then we can retry later
                }
            })
            .pipe(writeStream)
            .on('done', function () {
                // needle 
            });
    }
}

module.exports = { stream_multiple }