You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
parttimejob/node_modules/needle/examples/stream-multiple/stream-multiple.js

50 lines
1.5 KiB

1 month ago
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 }